gpt4 book ai didi

javascript - 三个JS Gridhelper Polar 可能吗?

转载 作者:行者123 更新时间:2023-11-28 18:45:24 24 4
gpt4 key购买 nike

我正在使用 Three JS,我可以使用 GridHelper 将网格添加到场景中。是否有类似的功能可以生成极坐标网格?

这就是生成 2D 笛卡尔平面的几何图形的方式 ( source ):

var geometry = new THREE.Geometry();
var material = new THREE.LineBasicMaterial({ vertexColors: THREE.VertexColors });

this.color1 = new THREE.Color(0x444444);
this.color2 = new THREE.Color(0x888888);

for (var i = -size; i <= size; i += step) {

geometry.vertices.push(
new THREE.Vector3(-size, 0, i), new THREE.Vector3(size, 0, i),
new THREE.Vector3(i, 0, -size), new THREE.Vector3(i, 0, size)
);

var color = i === 0 ? this.color1 : this.color2;

geometry.colors.push(color, color, color, color);

}

THREE.LineSegments.call(this, geometry, material);

我尝试重写如下:

var segments = 64;
var material = new THREE.LineBasicMaterial({ color: 0x1976D2 });
//Somehow below didn't work...
//var material = new THREE.LineBasicMaterial({ vertexColors: THREE.VertexColors });

var geometry = new THREE.Geometry();

this.color1 = new THREE.Color(0x444444);
this.color2 = new THREE.Color(0x888888);

for (var i = -size; i <= size; i += step) {
var circle = new THREE.CircleGeometry(i, segments);

// Remove center vertex
circle.vertices.shift();

geometry.merge(circle);

var color = i === 0 ? this.color1 : this.color2;

geometry.colors.push(color, color, color, color);

}

THREE.LineSegments.call(this, geometry, material);

但不知何故,线条是虚线......

enter image description here

最佳答案

尝试一些这样的:

THREE.PolarHelper = function(radius, rStep, aStep, color) {

var helper = new THREE.Mesh();

function line(r, a, color) {
var material = new THREE.LineBasicMaterial({ color: color });
var geometry = new THREE.Geometry();
geometry.vertices.push(
new THREE.Vector3( Math.cos(a)*r, Math.sin(a)*r, 0 ),
new THREE.Vector3( -Math.cos(a)*r, -Math.sin(a)*r, 0 )
);
return new THREE.Line( geometry, material );
}

function circle(r, color) {
var curve = new THREE.EllipseCurve( 0, 0, r, r, 0, 2 * Math.PI, false, 0 );
var path = new THREE.Path( curve.getPoints( 72 ) );
var geometry = path.createPointsGeometry( 72 );
var material = new THREE.LineBasicMaterial( { color : color } );
return new THREE.Line( geometry, material );
}

var d = radius/rStep;
for (var r=1; r<=rStep; r++) {
helper.add(circle(r*d, color));
}

d = Math.PI/aStep;
for (var a=0; a<aStep; a++) {
helper.add( line(radius, a*d, color) );
}

return helper;
}

[https://jsfiddle.net/tzsd5cre/ ]

关于javascript - 三个JS Gridhelper Polar 可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35398896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com