0

threejs を使用して、平面/線/円の立体投影プロジェクトを実行しようとしています。
このサイトと非常によく似ています: http://app.visiblegeology.com/stereonetApp.html

著者は three.js を使用していますが、javascript を難読化し、プロジェクションがどのように行われたかを確認できないようにするために最善を尽くしました。

これを three.js でレンダリングする方法について何か提案はありますか? テクスチャにレンダリングしてから、球の下部にラップしますか? レンダリング エンジンと連携して、実際に 3D ポイントをどこかで変換する必要がありますか?

ありがとう!

4

1 に答える 1

0

3D のベクトルを 2D 平面に投影するために使用する関数は次のとおりです。ベクトルは単位球上にあると想定されます。

function project(vector){
    vector = vector.clone();
    if(vector.z>0){vector.negate();}
    if(this.netType === 0){//Wulff Net
        vector.set(vector.x/(1-vector.z), vector.y/(1-vector.z), 0);
    }else if(this.netType  === 1){//Equal Area Net
        vector.set(vector.x*Math.sqrt(1/(1-vector.z)), vector.y*Math.sqrt(1/(1-vector.z)), 0);
    }
    return vector;
}

レンダリングに関しては、ステレオネットを 3D で表示するかどうかによって異なります。2D ビューのみに関心がある場合は、Three.js を使用することはお勧めしません。代わりに、キャンバスまたは SVG/VML にレンダリングすることをお勧めします。

(Visible Geology は GWT で記述されているため、Java で記述されているため、縮小されたコードとクレイジーさがあります。Stereonet は主に JavaScript で書き直しました)

于 2013-01-31T20:38:29.783 に答える