math3d | A lua math lib for linear algebra | Math library
kandi X-RAY | math3d Summary
kandi X-RAY | math3d Summary
A lua math lib for linear algebra (matrix and vector)
Support
Quality
Security
License
Reuse
Top functions reviewed by kandi - BETA
Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of math3d
math3d Key Features
math3d Examples and Code Snippets
Community Discussions
Trending Discussions on math3d
QUESTION
For some reason, the cube does not move around the screen, though it spins.
This is with the use of the functions m3dTranslateMatrix44
and m3dRotationMatrix44
though there seems a better way.
Modified rotation_matrix(axis, theta)
to produce a 4x4 matrix hopefully correctly.
I think perhaps it may be to create a mv_matrix
through the use of numpy multiplication. Done that. But still off a bit.
Update - June 24, 2019: After some explanation and excellent code by Rabbid76 the program is now working as intended. There is rotation and moving around the screen of the cube. Very nice!
...ANSWER
Answered 2019-Jun-24 at 21:45The expression form the question:
QUESTION
I ported over the .cpp version of spinningcube found there to python for a better understanding of opengl and to create something new. While I get the same result as the compiled version from the book source code from both 6th and 7ed as the program is the same from the two editions, the program in its current state displays a green screen only. The book of OpenGl Superbible 7th ed. on page 177 shows a spinning colored cube is supposed to fly around. Any assistance would be greatly appreciated.
Update - June 24, 2019 - I have updated the code so that the cube appears, spins, and moves per the excellent code from Rabbid76. Thank You.
...ANSWER
Answered 2019-Jun-21 at 07:28Matrices have to be initialized by the Identity Matrix and ech matrix need its "own" array of data:
QUESTION
I need to compile qt-5.5 for building various applications.
Qt provides instruction to accomplish this here , but following the steps provided, results in a make
error.
Note: I attempted searching for a solution of this make
warning without success, however, may be someone else experienced this problem.
System used:
- Archlinux (Linux arch-desktop 4.9.77-1-lts #1 SMP Wed Jan 17 12:59:05 CET 2018 x86_64 GNU/Linux)
- Qt 5.5.1
- OpenSSL 1.0.2g
- GCC (GCC) 7.2.1 20171224
Steps taken:
OS Installation:
- During ArchLinux installation, I installed development packages with
pacstrap /mnt/point/here base base-devel
, see this for more info
Post Installation:
- Downloaded Qt 5.5.1 from here
- Downloaded appropriate OpenSSL 1.0.2g (same found in Ubuntu distributions as this is my target platform) found here
- Installing this OpenSSL version will break dependencies, so I extracted it to
/opt/lib/openssl/
, and placed thelib
,bin
,share
folders in the root folder mentioned above. - extracted Qt-5.5.1
- ran
OPENSSL_LIBS='-L/opt/lib/openssl/lib/ -lssl -lcrypto'; ./configure -developer-build -opensource -nomake examples -nomake tests -confirm-license -openssl-linked -prefix /opt/qt-5.5.1
(This sets the openssl library location to use for configuring. Then I link the openssl libraries and configure Qt-5.5.1 to install to/opt/qt-5.5.1
) - This results in an appropriate output of abilities which Qt will have once installed, amongst which
OpenSSL
is found
Finally, make
ing with
- make -j 8
This takes a while eventually throwing the error:
...ANSWER
Answered 2018-Jan-24 at 11:28Now you have many of these errors:
QUESTION
I'm using GDI+ to implement some simple graphics, I've taken the code from this example http://www.vcskicks.com/3d_gdiplus_drawing.php and can get it to do what I want, but I don't understand how it's doing the conversion from 3D data point to 2D data point:
...ANSWER
Answered 2017-Aug-22 at 07:16The article and code is a bit confusing, indeed. Before we start, let's do some modifications to the rest of the code. Through these modifications, you will probably see what's going on more easily. Let's specify a static camera position. Instead of this weird formula:
QUESTION
As part of rewriting my game engine in cython, I am trying to improve the performance of my python+numpy classes for matrix and vector math as this was one of the major bottlenecks I had run into previously. This group of modules had defined classes for types such as Vector2/3/4
, Matrix2/3/4
, and Quaternion
.
Taking a page from the glMatrix javascript library, I thought that one thing I could do this time around is switch away from a class-based system to a module with just a bunch of math functions to reduce more overhead. That way, instead of returning a new object every time I, say, added two vectors together, I would not have to construct a custom object.
To test this out, I wrote a benchmark demo for creating two Vec2
objects a
and b
summing them component-wise to get a Vec2
object out
. The code for this is broken down into a main.py
that does the timing, a vec2.pyx
for the cython code, and a pyvec2.py
for the python code. Here is the code for each of those components:
main.py
...ANSWER
Answered 2017-Jun-27 at 08:02Cython's strength is arithmetic operations on basic C data types (ints, floats, doubles) and arrays of those. The only arithmetic operation in your code is two simple additions. The rest is data type conversions and array element access. Those operations will certainly dominate, as your timing results indicate. Every time you execute a function call from Python to Cython, there is type checking and conversion overhead. You need to do enough number crunching on the Cython side of this barrier to make it worthwhile.
This is not a good use case for Cython.
Is adding a lot of two-element lists really the bottleneck in your application? If it is, you should consider storing all the data in Cython variables, incurring the penalty of translation only once. Move data to the Python side only when you have to. If it isn't, you need to create a more realistic test.
My experience is that Cython can usually match or even outperform numpy, although it make take some effort to optimize. (numpy/scipy of course has the "slight" advantage of offering more functionality than I could create in a hundred lifetimes). But the same process of converting Python to C data types must occur there as well.
QUESTION
As part of writing a 3D game library, I am trying to implement frustum culling in order to avoid rendering objects that are outside of the camera perspective frustum. To do this, I first need to calculate a bounding sphere for each mesh and see if it collides with any of the six sides of the viewing frustum. Here is my currently (very) naive implementation of computing the bounding sphere for each model as written in model.py
in my code:
ANSWER
Answered 2017-Jan-08 at 09:06Iterate over the vertices once and collect the highest and lowest value for each dimension. This creates a bounding box made of Vec3(lowest.x, lowest.y, lowest.z) and Vec3(highest.x, highest.y, highest.z).
Use the median value of the highest and lowest value for each dimension. This creates the center of the box as Vec3((lowest.x + highest.x)/2, ...).
Then get the euclidean distance between the center and each of the 8 corners of the box. Use the largest distance, and the center you found to make a bounding circle.
You've only iterated once through the data set and have a good approximation of the bounding circle!
A bounding circle computed this way is almost certainly going to be bigger than the mesh. To shrink it, you can set the radius to the distance along the widest dimension from the center. This approach does risk chopping off faces that are in the corners.
You can iteratively shrink the radius and check that all points are in the bounding circle, but then you approach worse performance than your original algorithm.
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install math3d
Support
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page