【发布时间】:2016-08-26 13:11:45
【问题描述】:
我在上面的画布上画了一个简单的三坐标图;
我定义了一些常量来使用
var width = window.innerWidth * 0.5 , height = window.innerWidth * 0.5;
var cx = width / 2, cy = height / 2, cz = height / 2, blcx = 0, blcy = height, brcz = height, brcx = width, brcy = height;
var ySegment = height / 30;
var xSegment = width / 30;
var xSegmentRatio = xSegment / width;
var ySegmentRatio = ySegment / height;
cx 和 cy 和 cz 都指向画布的中心。 blcx 表示左下角-x,brcy 表示右下角-y 等。我意识到这有点骇人听闻,因为这是第一次尝试这样做,但如果你忍受对我来说,这里有一个我想要掌握的真实概念。
然后像这样画红线:
(function() {
var gridCx = cx, gridCy = cy, gridCz = cz;
var gridBlCx = blcx, gridBlCy = brcy;
for (var i = cx; i < width; i++) {
gridCx += xSegment;
gridBlCx += ySegment;
gridCzx -= gridCzx * (xSegmentRatio / ySegmentRatio);
ctx.beginPath();
ctx.moveTo(gridCx, cy);
ctx.lineTo(gridBlCx, height);
ctx.strokeStyle="#FF0000";
ctx.stroke();
}
})();
我试过了:
gridCzx -= gridCzx * xSegmentRatio;
gridCzy += gridCzy * ySegmentRatio;
ctx.beginPath();
ctx.moveTo(gridCzx, gridCzy);
ctx.lineTo(width, gridCzy);
ctx.strokeStyle = "#ff0000";
ctx.stroke();
得到了这个:
但我意识到我遗漏了一些基本的数学概念。感谢您提供的任何见解! 我的基本问题是:如何在 z 轴上选择一个与中心有一定距离的点?
【问题讨论】:
-
您的问题是什么?另外,请解释代码背后的直觉。我无法理解它。对变量的解释对开始会有很大帮助。
-
当然,我更新了操作。这里的直觉是我想定义三个轴,x/y/z,并且由于 HTML5 画布没有 z 轴,我需要找到一种方法来计算我在给定的 z 轴上绘制的一个点离中心有一段距离。我尝试做的第一件事是在 z/y 平面上绘制一个网格。
-
查看canvas内置的skew transformations
-
我的问题是如何在距离中心一定距离的情况下选择 z 轴上的点?
-
使用transformation matrix 来倾斜绘图,还可以在未变换空间中找到任何变换点。这是一个很好的transformation matrix tool
标签: javascript html math canvas z-axis