gpt4 book ai didi

geometry - 如何使用three.js绘制平行线?

转载 作者:行者123 更新时间:2023-12-04 05:42:58 27 4
gpt4 key购买 nike

我是矩阵变换概念的新手,我尝试在正交方向上偏移一条线。我想到的是:

line.translate( offsetPixels,  new THREE.Vector3( 1, 1, 0 )  );

它沿向量中定义的轴平移一条线。所以我的问题是如何在向量中定义轴以获得平行线?

最佳答案

也许我弄错了,但我看不到 THREE.Line 或它的父类(super class) THREE.Object3D 在哪里有一个名为 translate 的方法......当然你可以创建自己的 translate 函数,这不会太难。

function translate(object, offset, direction) {
if (offset <= 0) return false;
if (!(object instanceof THREE.Object3D)) return false;
if (!(direction instanceof THREE.Vector3)) return false;

direction.normalize();
object.position.x += offset * direction.x;
object.position.y += offset * direction.y;
object.position.z += offset * direction.z;

return true;
}

我编写的这个函数将转换从类 THREE.Object3D 派生的任何类型的对象。您可以像上面一样传入一个偏移量以及一个指定方向的 Vector3。

此调用将在负 x 方向上将 lineA 平移 30:
translate(lineA, 30, new THREE.Vector3(-1,0,0);

下面是相同的,因为方向向量被归一化(除以它的长度):
translate(lineA, 30, new THREE.Vector3(-5,0,0);

现在使用这样的平移功能将不允许您创建平行线,因为此功能只会移动已创建的线。我创建了这个 demo fiddle here 这会创建两条平行线(如果它们具有相同的斜率,则线是平行的)。如果您取消对翻译调用的注释,它会将第二行移动到第一行之上。

关于geometry - 如何使用three.js绘制平行线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11039841/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com