Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   3D полигон (многоугольник) (https://javascript.ru/forum/misc/21229-3d-poligon-mnogougolnik.html)

Questioner 01.09.2011 22:30

3D полигон (многоугольник)
 
Вот у меня код:
<style>
canvas {
 border: 1px solid black;
}
</style>
<script>
var CameraX, CameraY, CameraZ, grph, LightX, LightY, LightZ, LightCL, LightScat;
function c3D(x, y, z) {
return (x < CameraX ? x + z / CameraZ : x - z / CameraZ) + ';' + (y < CameraY ? y + z / CameraZ : y - z / CameraZ)
}

function Point(x, y, z) {
	this.x=x;
	this.z=z;
	this.y=y;
	//;grph.fillRect(c3D(x, y, z).split(';')[0], c3D(x, y, z).split(';')[1], 1, 1)
	return "[GraphObject Point]"
}

function Line(xyz1, xyz2, cl) {
	var a=grph.strokeStyle;
	grph.beginPath();
	grph.strokeStyle=cl !== null ? cl : a;
	grph.moveTo(c3D(xyz1.x, xyz1.y, xyz1.z).split(';')[0],c3D(xyz1.x, xyz1.y, xyz1.z).split(';')[1]);
	grph.lineTo(c3D(xyz2.x, xyz2.y, xyz2.z).split(';')[0],c3D(xyz2.x, xyz2.y, xyz2.z).split(';')[1]);
	grph.closePath()
}

function Polygone(cl1) {
	var XYZes=Polygone.arguments;
	cl=grph.fillStyle;
	grph.beginPath();
	grph.fillStyle=cl1;
	grph.moveTo(c3D(XYZes[1].x, XYZes[1].y, XYZes[1].z).split(';')[0],c3D(XYZes[2].x, XYZes[2].y, XYZes[2]).split(';')[1]);
	for (var i=2; i<Polygone.arguments.length; i++) {
		grph.lineTo(c3D(XYZes[1].x, XYZes[1].y, XYZes[1].z).split(';')[0],c3D(XYZes[2].x, XYZes[2].y, XYZes[2].z).split(';')[1]);
	}
	grph.fill();
	grph.fillStyle=cl;
}

function InitGraph(cnvPathDOM, lightX, lightY, lightZ, lightCl, lightScat, cameraX, cameraY, cameraZ) {
	LightX=lightX		|| 0;
	LightY=lightY		|| 0;
	LightZ=lightZ		|| 0;
	LightCl=lightCl		|| '#22FFFFFF';
	LightScat=lightScat || '#00000000';
	grph=cnvPathDOM.getContext("2d");
	CameraX=cameraX 	|| cnvPathDOM.width/2;
	CameraY=cameraY 	|| cnvPathDOM.height/2;
	CameraZ=cameraZ 	|| ((cnvPathDOM.width/2)+(cnvPathDOM.height/2))/2;
}

</script>
<body onload="InitGraph (document.getElementById('cnv'))">
<canvas id='cnv'></canvas>
<br/>
<button onclick="Polygone(Point(10, 10, 20), Point(290, 75, 20), Point(10, 140, 20), '#0000FF')">Poly</button>
<button onclick="Line(Point(10,40,30), Point(70, 80, 50), '#FF0000')">Line</button>
</body>

Почему он не работает? Я исправил в нем все про что ругался консоль и файрбаг, но он все равно не работает.

розовый слоник 02.09.2011 13:13

поставь в начале исполнения js debugger и проверь как выполняется скрипт

Questioner 02.09.2011 16:44

А это что?

popov654 03.09.2011 01:36

Это значит - поставьте брэйкпойнт и выполните пошагово


Часовой пояс GMT +3, время: 17:18.