是否可以 get/set 现有 path.circle 的半径?
Is ist possible to get/set the radius of an existing path.circle?
从路径开始 - 或其中的许多...
var c=paper.Path.Circle(centerPoint, 30);
c.strokeColor="";
我想让那个圆的半径线性增长。我可以这样做:
var children = paper.project.activeLayer.children;
paper.view.onFrame = function(event) {
for (var i = 0; i < children.length; i++) {
var item = children[i];
item.scale(1.01);
}
但这会以指数方式增加半径!
我可以获取圆的半径并更改它吗?还是我必须创建一个新的,删除旧的?
scale()
是怎么做到的?
我还想删除大于给定尺寸的圆圈。
谢谢,
塞巴斯蒂安
你可以得到圆的半径,虽然它是间接的。
var radius = circle.bounds.topCenter.y - circle.bounds.center.y;
或
var radius = circle.bounds.width / 2
给你一个圆的半径。但是一个圆被存储为 4 个段,有句柄进出,而不是圆类型的对象,所以半径没有存储在任何地方。
为了让它看起来变大,你必须删除旧的并画一个更大的新的。
也可以缩放它,但您想在不复合缩放的情况下缩放它。因此,如果您希望它增长 1.01 然后增长 1.02 而不是 1.0201,等等,您将需要每次调整比例因子。
还不是很清楚你想如何扩大圈子,但这里有一些代码对你想做什么做出了一些假设:
function Scale() {
this.original = 1.0;
this.current = 1.0;
}
// target refers to original size in fractional terms, e.g., to
// grow by 1% specify 1.01 or to shrink by 1% specify 0.99. It returns
// the scale factor to apply to the current scale to achieve the
// target. So to increase the scale by 10% of the original size each
// time:
//
// var s = new Scale();
//
// for (i = 1.1; i <= 2.05; i += 0.1) {
// var scaleFactor = s.scale(i);
// }
//
// note the i <= 2.05 to allow for real number math issues.
//
Scale.prototype.scale = function(target) {
// get the scaling factor from the original size
var oFactor = target / this.original;
// now get the factor to scale the current size by
var cFactor = oFactor / this.current;
this.current = oFactor;
return cFactor;
}
从路径开始 - 或其中的许多...
var c=paper.Path.Circle(centerPoint, 30);
c.strokeColor="";
我想让那个圆的半径线性增长。我可以这样做:
var children = paper.project.activeLayer.children;
paper.view.onFrame = function(event) {
for (var i = 0; i < children.length; i++) {
var item = children[i];
item.scale(1.01);
}
但这会以指数方式增加半径!
我可以获取圆的半径并更改它吗?还是我必须创建一个新的,删除旧的?
scale()
是怎么做到的?
我还想删除大于给定尺寸的圆圈。
谢谢, 塞巴斯蒂安
你可以得到圆的半径,虽然它是间接的。
var radius = circle.bounds.topCenter.y - circle.bounds.center.y;
或
var radius = circle.bounds.width / 2
给你一个圆的半径。但是一个圆被存储为 4 个段,有句柄进出,而不是圆类型的对象,所以半径没有存储在任何地方。
为了让它看起来变大,你必须删除旧的并画一个更大的新的。
也可以缩放它,但您想在不复合缩放的情况下缩放它。因此,如果您希望它增长 1.01 然后增长 1.02 而不是 1.0201,等等,您将需要每次调整比例因子。
还不是很清楚你想如何扩大圈子,但这里有一些代码对你想做什么做出了一些假设:
function Scale() {
this.original = 1.0;
this.current = 1.0;
}
// target refers to original size in fractional terms, e.g., to
// grow by 1% specify 1.01 or to shrink by 1% specify 0.99. It returns
// the scale factor to apply to the current scale to achieve the
// target. So to increase the scale by 10% of the original size each
// time:
//
// var s = new Scale();
//
// for (i = 1.1; i <= 2.05; i += 0.1) {
// var scaleFactor = s.scale(i);
// }
//
// note the i <= 2.05 to allow for real number math issues.
//
Scale.prototype.scale = function(target) {
// get the scaling factor from the original size
var oFactor = target / this.original;
// now get the factor to scale the current size by
var cFactor = oFactor / this.current;
this.current = oFactor;
return cFactor;
}