我从另一个程序试图输入一些已知的ACR值,并复制它们在three.js所如何绘制2D弧
现在我用下面的代码我在此网站上发现。它画出的弧线很好,但它可能不是最好的选择。
function DRAWarc(){
// smooth my curve over this many points
var numPoints = 100;
spline = new THREE.SplineCurve3([
new THREE.Vector3(0, 0, 0),
new THREE.Vector3(0, 200, 0),
new THREE.Vector3(150, 150, 0)
]);
var material = new THREE.LineBasicMaterial({
color: 0xff00f0,
});
var geometry = new THREE.Geometry();
var splinePoints = spline.getPoints(numPoints);
for(var i = 0; i < splinePoints.length; i++){
geometry.vertices.push(splinePoints[i]);
}
var line = new THREE.Line(geometry, material);
scene.add(line);
}
以下是已知的变量。
中心点(X,Y)(如果都得一个完整的圆圈,圆圈的中心)
半径(如果它是一个圆)
起始角(我还不能肯定,但我认为这是度数,如果它是一个圆,逆时针旋转,0表示圆的右侧)
结束角(见上)
更多代码!
///////////
// SCENE //
///////////
scene = new THREE.Scene();
////////////
// CAMERA //
////////////
var SCREEN_WIDTH = window.innerWidth, SCREEN_HEIGHT = window.innerHeight;
viewsize = 900;
camera = new THREE.OrthographicCamera(
SCREEN_WIDTH/- 2, SCREEN_WIDTH/2,
SCREEN_HEIGHT/2, SCREEN_HEIGHT/- 2,
1, 1e6);
camera.position.z = 2000;
scene.add(camera);
camera.lookAt(new THREE.Vector3(2100, 3600, 0));
//////////////
// RENDERER //
//////////////
// create and start the renderer
if (Detector.webgl){
renderer = new THREE.WebGLRenderer();
//alert('no problem.');
}else{
renderer = new THREE.CanvasRenderer();
alert('problem.');
}
renderer.setClearColor("white", 1);
renderer.setSize(SCREEN_WIDTH, SCREEN_HEIGHT);
container = document.body;
container.appendChild(renderer.domElement);
////////////
// EVENTS //
////////////
// automatically resize renderer
THREEx.WindowResize(renderer, camera);
// toggle full-screen on given key press
THREEx.FullScreen.bindKey({ charCode : 'm'.charCodeAt(0) });
///////////
// STATS //
///////////
// displays current and past frames per second attained by scene
stats = new Stats();
stats.domElement.style.position = 'absolute';
stats.domElement.style.bottom = '0px';
stats.domElement.style.zIndex = 100;
container.appendChild(stats.domElement);
///////////
// LIGHT //
///////////
// create a light
var light = new THREE.PointLight(0xffffff);
light.position.set(0,250,0);
scene.add(light);
var ambientLight = new THREE.AmbientLight(0x111111);
// scene.add(ambientLight);
//////////////
// GEOMETRY //
//////////////
// most objects displayed are a "mesh":
// a collection of points ("geometry") and
// a set of surface parameters ("material")
doWork();
}
function animate()
{
requestAnimationFrame(animate);
render();
update();
}
function update()
{
// delta = change in time since last call (in seconds)
var delta = clock.getDelta();
// functionality provided by THREEx.KeyboardState.js
if (keyboard.pressed("1"))
document.getElementById('message').innerHTML = ' Have a nice day! - 1';
if (keyboard.pressed("2"))
document.getElementById('message').innerHTML = ' Have a nice day! - 2 ';
//controls.update();
stats.update();
}
function render()
{
renderer.render(scene, camera);
}`
我们可以看一下你的代码的其余部分,好吗?也许作为一个jsFiddle? – jameslafferty
哥们我有28000行代码:P你想看什么?思考过后,这基本上是一个数学问题......我需要一种算法将数据转换为三点,然后上面的代码才能满足我的需求。顺便说一句,代码是好的只是想显示我正在尝试 – contehhh
28千行可能是矫枉过正。我只是在寻找一个能够充分说明你想要做什么的例子。例如,我不知道'''scene''是从哪里来的,或者是否让''''''''''''''''''''''''全局有什么意义。根据你在这里得到的结果,很难完全回答这个问题。 – jameslafferty