2013-03-15 129 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的頂點列表?