2013-03-15 65 views
1

我工作在Java3D的东西,我知道TransformGroups是你会怎么通常适用比例...单位立方体

不过,我想创建定义长方体的基础上的方式缩放矢量。

所以我有一个单位立方1,1,1 - > -1,-1,-1,我想手动应用缩放变换。

private static void scaleCoordinates(IndexedQuadArray indexedQuadArray, Vector3d scaleVector) { 
    //Create scalar transform 
    Transform3D scalarTransform = new Transform3D(); 
    scalarTransform.setScale(scaleVector); 

    // retrieve the vertex coordinates 
    GeometryInfo indexedQuadArrayGeometryInfo = new GeometryInfo(indexedQuadArray); 
    Point3f coordinatesToScaleArray [] = indexedQuadArrayGeometryInfo.getCoordinates(); 

    // scale each 3d coordinate 
    for(Point3f coordinate: coordinatesToScaleArray){ 
     scalarTransform.transform(coordinate); 
    } 

    // update the indexed quad array with scaled-coordinates. 
    indexedQuadArray.setCoordinates(0, coordinatesToScaleArray); 
} 

现在它适用于缩放比例为正整数时,但如果我缩放0.5或负数,顶点会变得混乱。

任何人都知道什么是错的?我应该能够缩小小于1我认为,也许有些事情与我不知道的Transform3D.transform(Point3f)有关。

非常感谢您的阅读!

回答

0

我不希望负数工作。当您考虑时,缩放转换实际上只是一种多元化。因此,用矢量(.5,.6,.7)缩放点(1,1,1)会给你新的点(.5,.6,.7)

如果你“缩放”一个负数,你会把你的魔方翻出来,而各种法线和边缘都是错误的。

您能否提供您的quadArray和您使用的scaleVector的顶点列表?