Javascript WebGL:你怎么画五角大楼?

Javascript WebGL:你怎么画五角大楼?,javascript,webgl,Javascript,Webgl,我正在练习WebGL,并试图画一个五角大楼,但我不知道如何实现这一点。任何帮助都将不胜感激。使用three.js很容易做到这一点。您可以使用圆几何并将分段数减少到五个,以获得五边形 var geometry = new THREE.CircleGeometry( 10, 5 ) var material = new THREE.MeshBasicMaterial( { color: 0xffff00 } ) var circle = new THREE.Mesh( geometry, mater

我正在练习WebGL,并试图画一个五角大楼,但我不知道如何实现这一点。任何帮助都将不胜感激。

使用
three.js
很容易做到这一点。您可以使用
圆几何
并将分段数减少到五个,以获得五边形

var geometry = new THREE.CircleGeometry( 10, 5 )
var material = new THREE.MeshBasicMaterial( { color: 0xffff00 } )
var circle = new THREE.Mesh( geometry, material )
scene.add( circle )
更多信息请点击此处:

在一个工作示例中:

var-width=window.innerWidth
var height=window.innerHeight
var renderer=new THREE.WebGLRenderer({antialas:true})
renderer.setClearColor(0x8e8ed7)
renderer.setPixelRatio(window.devicePixelRatio)
渲染器。设置大小(宽度、高度)
document.body.appendChild(renderer.doElement)
var scene=new THREE.scene()
var摄像机=新的三视角摄像机(35,宽/高,0.1300)
摄像机位置设置(0,0,100)
var controls=新的三个.OrbitControls(摄影机、渲染器.doElement)
controls.minDistance=40
controls.maxDistance=1300
var material=新的3.MeshPhongMaterial({颜色:0xFF0000,镜面反射:0x111111,光泽度:75})
场景.添加(相机,新的三点环境光(0xffffff,0.4))
var灯=新的三点灯(0xffffff,0.8)
摄影机。添加(灯光)
灯光位置y+=60
灯位置x+=70
requestAnimationFrame(函数animate(){
请求动画帧(动画)
渲染器。渲染(场景、摄影机)
})
var几何=新的三圆几何(10,5)
var material=new THREE.MeshBasicMaterial({color:0xffff00})
var circle=新的三个网格(几何体、材质)
场景。添加(圆圈)
html,正文{
宽度:100%;
身高:100%;
保证金:0;
}

使用
three.js
很容易做到这一点。您可以使用
圆几何
并将分段数减少到五个,以获得五边形

var geometry = new THREE.CircleGeometry( 10, 5 )
var material = new THREE.MeshBasicMaterial( { color: 0xffff00 } )
var circle = new THREE.Mesh( geometry, material )
scene.add( circle )
更多信息请点击此处:

在一个工作示例中:

var-width=window.innerWidth
var height=window.innerHeight
var renderer=new THREE.WebGLRenderer({antialas:true})
renderer.setClearColor(0x8e8ed7)
renderer.setPixelRatio(window.devicePixelRatio)
渲染器。设置大小(宽度、高度)
document.body.appendChild(renderer.doElement)
var scene=new THREE.scene()
var摄像机=新的三视角摄像机(35,宽/高,0.1300)
摄像机位置设置(0,0,100)
var controls=新的三个.OrbitControls(摄影机、渲染器.doElement)
controls.minDistance=40
controls.maxDistance=1300
var material=新的3.MeshPhongMaterial({颜色:0xFF0000,镜面反射:0x111111,光泽度:75})
场景.添加(相机,新的三点环境光(0xffffff,0.4))
var灯=新的三点灯(0xffffff,0.8)
摄影机。添加(灯光)
灯光位置y+=60
灯位置x+=70
requestAnimationFrame(函数animate(){
请求动画帧(动画)
渲染器。渲染(场景、摄影机)
})
var几何=新的三圆几何(10,5)
var material=new THREE.MeshBasicMaterial({color:0xffff00})
var circle=新的三个网格(几何体、材质)
场景。添加(圆圈)
html,正文{
宽度:100%;
身高:100%;
保证金:0;
}

如果您只想使用webgl,首先需要创建顶点,为此您可以使用一个圆,在一个圆上选择彼此距离相等且位于圆上的五个点,以下是每个坐标的公式

let vertices =[];
for(let i=0; i<5; i++){
  let x = radius * Math.cos(360/5 * i);
  let y = radius * Math.sin(360/5 * i);
  vertices.push(x);vertices.push(y);
}
让顶点=[];

对于(设i=0;i如果您只想使用webgl,首先需要创建顶点,为此您可以使用一个圆,在一个圆上选择彼此距离相等且位于圆上的五个点,以下是每个坐标的公式

let vertices =[];
for(let i=0; i<5; i++){
  let x = radius * Math.cos(360/5 * i);
  let y = radius * Math.sin(360/5 * i);
  vertices.push(x);vertices.push(y);
}
让顶点=[];

对于(让i=0;i你现在在画什么?你画了三角形吗?矩形吗?这个问题太宽了。在WebGL中有无数种方法可以画五角大楼,没有更多细节和一些代码,你无法知道你在问什么。如果你要找人教你WebGL,那么这是一个非常大的主题,你应该去。现在,voting想结束。你现在在画什么?你画了三角形吗?矩形吗?这个问题太宽了。在WebGL中画五角大楼的方法很多,没有更多细节和一些代码,你无法知道你在问什么。如果你要找人教你WebGL,那么这是一个非常大的话题,你应该去。现在投票结束。这不是如何在webgl中绘制五角大楼的答案,而是如何在three.js中绘制五角大楼的答案。three.js不是webgl。通过类比,如果有人问“我如何在C++中绘制五角大楼?”您使用canvas2d回答了一个JavaScript示例,因为JavaScript和canvas2d都是用C++编写的。问题本身是离题的,因为堆栈溢出。回答离题的问题被认为是不好的,因为它只会鼓励更多离题的问题。我做了负责的事情,并投票关闭了它。如果提问者修复了问题所以这是一个主题,我将取消我的投票,留下一个答案这不是一个关于如何在webgl中绘制五角大楼的答案,而是一个关于如何在three.js中绘制五角大楼的答案。three.js不是webgl。如果有人问“我如何在C++中绘制五角大楼”,可以类推您使用canvas2d回答了一个JavaScript示例,因为JavaScript和canvas2d都是用C++编写的。问题本身是离题的,因为堆栈溢出。回答离题的问题被认为是不好的,因为它只会鼓励更多离题的问题。我做了负责的事情,并投票关闭了它。如果提问者修复了问题所以这是关于这个话题的,我将取消我的投票,留下一个答案。我可以为你画,如果你想的话。我可以为你画,如果你想的话