1
我是新来的矩阵转换的概念,我尝试偏移正交方向的一条线。我想到的是:如何使用three.js绘制平行线?
line.translate(offsetPixels, new THREE.Vector3(1, 1, 0) );
它沿着向量中定义的轴平移一条直线。所以我的问题是如何定义矢量中的轴来获得平行线?
我是新来的矩阵转换的概念,我尝试偏移正交方向的一条线。我想到的是:如何使用three.js绘制平行线?
line.translate(offsetPixels, new THREE.Vector3(1, 1, 0) );
它沿着向量中定义的轴平移一条直线。所以我的问题是如何定义矢量中的轴来获得平行线?
也许我错了,但我不能看到THREE.Line或它的超类THREE.Object3D在哪里有一个名为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方向上由30平移LINEA:
translate(lineA, 30, new THREE.Vector3(-1,0,0);
和以下是相同的,因为该方向矢量进行归一化(通过其长度划分):
translate(lineA, 30, new THREE.Vector3(-5,0,0);
现在使用像这样的翻译功能将不允许您创建平行线,因为此功能只会移动已创建的线。我创建了这个demo fiddle here它创建了两条平行线(如果它们具有相同的斜率,线是平行的)。如果您取消注释翻译的呼叫,则会将第二行移至第一行。
感谢科里,多数民众赞成。还有一件事是有一个方向与线相同。如何获得一个? –
可能值得它自己的问题。我会创建另一个问题页面,并具体说明您要完成的任务。我会建议您提供诸如此类的答案,以及其他已经帮助您的答案,或者至少通过点击答案旁边的复选框来“接受”答案。否则,人们不会倾向于回答。 –
谢谢,没关系。这就是我所要求的(正交方向)。对不起,如果我犯了一个错误,但不清楚 –