我面临着与三角形边缘相交的问题.实际上,我正在尝试使用鼠标选择/交叉网格的三角形,顶点,边缘.所以我从鼠标当前位置制作了光线,然后我将它与网格元素(如三角形/多边形,顶点,边缘等)相交以使用它.基本上,3D建模的东西.与三角形相交很简单有趣.顶点部分很棘手.
但现在,我不知道如何用三角形边相交/拾取.我的意思是我在与鼠标射线相交时如何对待它们?首先,我认为它们可以像3D线一样对待.但最终未能做到Ray和the Line相交.在互联网上搜索但没有找到任何有用的信息.虽然我发现一些开源项目正在使用OpenGL内置的拾取功能来选择/与Edge交叉.但就我而言,我无法使用它.:(
我当前的边缘选取代码结构如下所示:
void pickEdge(Ray ray, Scene scene)
{
for each object in scene
{
mesh = getMesh(object)
for each triangle in mesh
{
for each edge in triangle
{
v1 = getV1(edge)
v2 = getV2(edge)
// Do intersect with 'ray' and 'v1', 'v2'. But how?
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
所以我被困在这里,真的需要一些帮助.非常感谢任何想法,算法或小帮助.
我想知道如何将指针变量地址分配给 NASM 汇编程序中的另一个指针变量。我的意思是取地址。
在 C/C++ 语言中,它应该是这样的:
char *p1 = "Hello, World?";
// So here, I can do it easily
char *p2 = p1;
Run Code Online (Sandbox Code Playgroud)
在 NASM 中,我在数据部分有两个变量,如下所示:
String_01 db 'Hello, World', 0
String_02 dd 0
Run Code Online (Sandbox Code Playgroud)
那么如何在 NASM 中完成 C/C++ 赋值呢?
实际上我是 NASM 的初学者,所以我需要一些详细信息。请帮忙。
我们必须使用该DeleteObject
函数来删除GDI对象.
但是如果我们不删除通过该CreatePen
功能创建的GDI笔会发生什么?
我有两个叫做FWindow和FFramwWindow的课程.该FFramwWindow类继承的FWindow.该FWindow类包含两个构造方法.
第一个是默认构造函数,第二个包含一个int类型的参数.
我从FFramwWindow类的默认构造函数中调用第二个构造函数来初始化名为'value' 的FWindow类的成员变量.
但我不知道它为什么不起作用 -
class FWindow {
public:
int value;
FWindow()
{
this->value = 0;
}
FWindow(int val)
{
this->value = val;
}
};
class FFramwWindow : public FWindow
{
public:
FFramwWindow()
{
FWindow::FWindow(6);
printf("value %d\n", this->value);
}
};
int main(int argc, _TCHAR* argv[])
{
FFramwWindow obj;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码打印 - value 0
在哪里我预计会打印 - value 6
似乎它只调用默认的基类构造函数,而不是我明确调用的第二个.
注意:我正在使用Visual …
c++ ×2
3d ×1
algorithm ×1
assembly ×1
constructor ×1
gdi ×1
intersection ×1
math ×1
nasm ×1
oop ×1
pointers ×1
ray-picking ×1
winapi ×1