【发布时间】:2016-03-09 22:59:57
【问题描述】:
我正在尝试填充一个用矩形填充的圆形区域(准确地说,光栅宽度尺寸为 12x20)。
经过一些研究和实验,我找到了一种解决方案。画一个圆,获取它的边界框并遍历每个像素以发现距离小于或等于圆 R。
这里有一些代码示例,我用的是three.js
let shapeSize = [12, 20];
let circleR = R / 2;
let circle = new Circle(position, circleR);
let bounds = circle.bounds;
for (let i = bounds.x; i <= bounds.x + bounds.width; i += 1) {
for (let j = bounds.y; j <= bounds.y + bounds.height; j += 20) {
let center = new Point(i, j);
if (center.getDistance(position) <= circleR) {
center = new Point(i, j);
let shape = new Shape({center, alpha: 0.7, scale: 0.8});
j += shapeSize[1] - 1; // this part smells
}
}
}
形状为方形,带有一个 12x20 尺寸。
但是使用此代码示例,不可能得到一个充满正方形的圆圈。如果我增加 i+=12 和 y+=20,我会得到太多的空间,如果每个正方形都在另一个上面,那么它会生成太多的正方形。
你知道如何让它变得漂亮和优雅吗?
【问题讨论】:
-
clipMask 有帮助吗?
-
但是我需要以各种方向和方式移动圆圈内的每个形状,clipMask可以吗?
标签: javascript canvas geometry drawing paperjs