在摆弄Panda3D以查看是否可以使用它来解决一些简单的几何问题时,我完成了以下littel测试:
def def_planes_intersect():
"""Intersects the plane defined by the xy and xz axis'."""
xy = Plane()
xz = Plane((LPoint3f(1, 0, 1), LPoint3f(2, 0, 1), LPoint3f(1, 0, 2)))
if xy.intersectsPlane((0, 10, 0), (1, 0, 0), xz) is True:
print("works")
else:
print("doesn't")
它按预期工作,但我不明白的是如何使用定义交集的LPoint3f和LVector3f。
在Panda3D文档中,它说:
intersectsPlane(来自:LPoint3f,delta:LVector3f,其他:LPlanef(→bool
如果两个平面相交,则返回true;如果不相交,则为false。如果它们确实相交,那么from和delta将填充相交线的参数表示:也就是说,from是该线上的一个点,delta是显示该线方向的向量。
它们的是什么意思?中填充了from和delta?
因此,在编写问题时,我意识到我必须初始化LPoint3f和LVector3f的实例,并且该方法将用相关数据填充它们。我决定发布这篇文章,因为可能会有人像我一样迷路
from panda3d.core import LPoint3f, Plane, LVector3f
def def_planes_intersect():
"""Intersects the plane defined by the xy and xz axis'."""
xy = Plane()
xz = Plane((LPoint3f(1, 0, 1), LPoint3f(2, 0, 1), LPoint3f(1, 0, 2)))
a = LPoint3f()
av = LVector3f()
if xy.intersectsPlane(a, av, xz) is True:
print("works")
print(f"{a}n{av}")
else:
print("doesn't")
它打印出明显的结果:
LPoint3f(0, 0, 0)
LVector3f(1, 0, 0)