Tag: 3d

如何创建一个圆柱形骨骼存储为2点(头部,尾部)的矢量?

这就是我想要的,有人在网上写过,但我以前从未使用过四元数,所以不知道如何实现它。 我相信这只是一个简单的等式,但如何在c / c ++代码中实现? Here: “You could use a bone stored as a vector made of 2 points (Head,Tail). Since you are rotating it, Head will be the fulcrum and Tail will rotate around an arbitrary axis. That’s a quaternion’s job.” 我有一个圆柱形网格的所有顶点的绝对位置,现在如果我在顶端和底端创建两个矢量/点V1(x,y,z)和V2(x,y,z),那么我将能够变换网格顶点只需转换V2(顶端)点,但V1(底端)不应改变其位置。 我可以在带有glutSolidCylinder的OpenGL中做,它非常简单,但是我想用网格顶点实现,所以每个顶点都应该在顶部或底部矢量/点的任何变化后更新。 谢谢。

GLMmodel顶点中的-431602080.000000值是什么意思?

我使用GLMmodel对象来表示C ++程序中的Google Sketch Up模型。 这些对象有一个成员(顶点),其中包含对象的所有顶点的列表,如下所示:[GLfloat x顶点1的组件,顶点1的GLfloat y组件,顶点1的GLfloat z组件,GLfloat x组件顶点2 …]。 当我读取所有这些值时,我得到所有这些值的小数字,除了前三个(第一个顶点的坐标),它们都是三个-431602080.000000。 这在我的程序中没有意义。 我用谷歌搜索了它,我发现这个值经常出现在C ++程序中,但我不知道它是什么意思。 有任何想法吗?

修改malloc的二维数组到C中的3d数组的function

我是C的新手,这是我写的第一个程序。 我的教授给了我们一个为2d数组分配内存的函数,叫做malloc2d。 我应该修改它来为一个3d数组分配内存,但对于CI这么新,我不知道如何去做。 我已经尝试过查看3D数组的其他malloc函数,但它们看起来与我给出的类似。 同样,我们有一个free2d函数,也需要针对3d数组进行修改。 以下是要修改的function: void** malloc2D(size_t rows, size_t cols, size_t sizeOfType){ void* block = malloc(sizeOfType * rows * cols); void** matrix = malloc(sizeof(void*) * rows); for (int row = 0; row < rows; ++row) { matrix[row] = block + cols * row * sizeOfType; }//for return matrix; }//malloc2D void free2D(void*** matrix){ free((*matrix)[0]); free((*matrix)); […]

将3D数组作为参数传递给C中的函数

我试图编写一个对3d数组的元素求和的函数,但是它一直说我将3d数组作为参数传递的行存在问题。 我的代码如下: #include int sum3darray(a[][][], size); main() { int check[3][3][3]={ 0 }; int size=3; printf(“The sum is %d\n”,sum3darray(check,size)); } int sum3darray(a[][][],size) { int i,j,k,sum=0; for(i=0;i<size;i++) { for(j=0;j<size;j++) { for(k=0;k<size;k++) { printf("i=%d, j=%d,k=%d, checkijk=%d ",i,j,k,check[i][j][k]); sum+=check[i][j][k]; printf("sum=%d\n", sum); } } } return(sum); } 编译器将第3行和第11行标记为问题。 有人可以帮忙吗?

Cuda,计算3d对象之间的距离矩阵

我在3D中有一个连接N个对象(primefaces)的“字符串”(分子)(每个primefaces都有一个坐标)。 我需要计算分子中每对primefaces之间的距离(参见下面的伪代码)。 如何用CUDA完成? 我应该转到内核函数2 3Darrays吗? 或3个坐标为X [N],Y [N],Z [N]的数组? 谢谢。 struct atom {double x,y,z; } int main() { //N number of atoms in a molecule double DistanceMatrix[N][N]; double d; atom Atoms[N]; for (int i = 0; i < N; i ++) for (int j = 0; j < N; j++) DistanceMatrix[i][j] = (atoms[i].x -atoms[j].x)*(atoms[i].x -atoms[j].x) […]

使用单个光源渲染3D立方体的最简单方法是什么?

下面描述的是一个三维立方体的蹩脚Photoshop模型。 以下是我的参数:解决方案必须…… …编译并运行我的小而忠实的Macbook Air, 而不使用像葡萄酒这样的Windows模拟器 …生成一个窗口,在运行时看起来与上面的模型相当接近 …只使用免费工具(“免费”,如“演讲” 和 “啤酒”) …使用C(不是C ++或C#) …能够从编译时定义的不同角度渲染立方体,可能使用预处理器宏 ……利用GPU WEEE! 潜在资源: http://www.gamedev.net/topic/579689-sdl–opengl-rendering-a-cube/ http://www.evl.uic.edu/arao/cs594/sdlglsl.html

计算3D网格的表面积

我有一个由椎骨和三角形定义的3D网格。 我也有网格的法线。 我想计算网格的面积,假设它总是关闭的。 我在这个问题中发现了一个有趣的3D体积计算实现,我在C代码中应用它来构建一个由R调用的函数。这是代码: double SignedVolumeOfTriangle(double p1X, double p1Y, double p1Z, double p2X, double p2Y, double p2Z, double p3X, double p3Y, double p3Z) { double v321 = p3X*p2Y*p1Z; double v231 = p2X*p3Y*p1Z; double v312 = p3X*p1Y*p2Z; double v132 = p1X*p3Y*p2Z; double v213 = p2X*p1Y*p3Z; double v123 = p1X*p2Y*p3Z; return (double)(1.0/6.0)*(-v321 + v231 + v312 – […]

如何在OpenGL中创建廉价阴影?

我有两个型号,A和B,还有一个灯,L。我想模型A在模型B上投下阴影。我不想打扰阴影体积或适当的阴影,只是一个简单的圆形阴影就足够了。 效果是模型A被视为用于阴影投射目的的球体。 以下是我设想算法的方法: 对于模型B中的每个三角形,绘制三角形。 沿着从L到A的直线在三角形上投影圆,根据三角形的距离增加圆的大小。 确保圆圈被剪切到三角形的边界(我想,以某种方式使用模板缓冲区)。 我正在使用OpenGL和简单的C. 我可以阅读一些参考文档的指针吗? 还是提出想法?

在openGL中使用glGenBuffers时的空白屏幕

#include #include #include #include void changeSize(int w, int h) { if(h == 0) h = 1; float ratio = w / h; glMatrixMode(GL_PROJECTION); glLoadIdentity(); glViewport(0, 0, w, h); gluPerspective(40,ratio,1.5,20); glMatrixMode(GL_MODELVIEW); } void renderScene(void) { glClear(GL_COLOR_BUFFER_BIT ); glLoadIdentity(); glTranslatef(0.0,0.0,-5.0); glDrawArrays(GL_TRIANGLES,0,3); glutSwapBuffers(); } void init() { GLfloat verts[] = { 0.0, 1.0, -1.0, -1.0, 1.0, -1.0 }; […]

在3d网格中转发(绘图)线

我需要像bressenham算法这样的东西,但不太适合3D网格空间 我得到了3d网格的单元格(边缘大小1.0)需要从点S开始并前进到点K’触摸’所有单元格线接触(即使只触及边缘点我需要所有8个单元格) 需要使用它来遍历向单元格写入值或从单元格中读取值,并且需要它与可管理的一样快(这将大量使用每帧绘制数百万个这样的3d网格线) 有人可以说它看起来怎么样? TNX