3.1 基本幾何形狀
球體(SphereGeometry)
構造函數:
THREE.SphereGeometry(radius, segmentsWidth, segmentsHeight, phiStart, phiLength, thetaStart, thetaLength)
radius:是半徑;
segmentsWidth:經度上的切片數,相當於經度被切成了幾瓣;
segmentsHeight:緯度上的切片數,相當於緯度被切成了幾層;
phiStart:經度開始的弧度;
phiLength:經度跨過的弧度;
thetaStart:緯度開始的弧度;
thetaLength:緯度跨過的弧度。
分段
在圖形底層的實現中,並沒有曲線的概念,曲線都是由多個折線近似構成的。當折線越多,越近乎曲線。切片數決定了,圖形的“精細度”
經度分段(切片demo)



維度分段(切片demo)



缺省值說明
phiStart、phiLength、thetaStart、thetaLength 這四個值是缺省值,即可以省略,而省略的時候實際有默認值,將畫出一個完整的球體。通過不同的值修改,可以實現各種,不完整球體、球面。
例如:
THREE.SphereGeometry(2, 50, 50, Math.PI / 2, Math.PI)


(1/4 個球面)
球體的完整示例demo與效果:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<script type="text/javascript" src="./three.js"></script>
<title>Document</title>
</head>
<body onload="init()">
<canvas id="mainCanvas" width="800px" height="600px"></canvas>
</body>
<script>
function init() {
var renderer = new THREE.WebGLRenderer({
canvas: document.getElementById('mainCanvas')
});
renderer.setClearColor(0x000000);
var scene = new THREE.Scene();
var aspect = window.innerWidth / window.innerHeight;
var camera = new THREE.OrthographicCamera(-2 * aspect, 2 * aspect, -1.5 * aspect, 1.5 * aspect, 1, 500);
camera.position.set(200, 200, 200);
scene.add(camera);
camera.lookAt(new THREE.Vector3(0, 0, 0));
var cube = new THREE.Mesh(new THREE.SphereGeometry(2, 50, 50),
new THREE.MeshBasicMaterial({
color: 0xff0000,
wireframe: true
})
)
scene.add(cube);
renderer.render(scene, camera);
}
</script>
</html>

