2012-06-14 99 views
1

我是新来的矩阵转换的概念,我尝试偏移正交方向的一条线。我想到的是:如何使用three.js绘制平行线?

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

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

回答

2

也许我错了,但我不能看到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它创建了两条平行线(如果它们具有相同的斜率,线是平行的)。如果您取消注释翻译的呼叫,则会将第二行移至第一行。

+0

感谢科里,多数民众赞成。还有一件事是有一个方向与线相同。如何获得一个? –

+0

可能值得它自己的问题。我会创建另一个问题页面,并具体说明您要完成的任务。我会建议您提供诸如此类的答案,以及其他已经帮助您的答案,或者至少通过点击答案旁边的复选框来“接受”答案。否则,人们不会倾向于回答。 –

+0

谢谢,没关系。这就是我所要求的(正交方向)。对不起,如果我犯了一个错误,但不清楚 –