使用Indeesign脚本和 /或Basil.js在复杂的矢量形状中绘制随机形状
我想知道是否有一种简单的方法可以使用Basil.js或Indesign脚本来绘制复杂矢量形状(例如信函形式)内的一系列随机椭圆(或其他内容)。我想出了如何通过使用if语句并检查我的随机椭圆的距离与较大椭圆形的中心的距离,从而将随机尺寸和彩色椭圆放在较大的椭圆中。但是我一生无法找到一种方法,让我的脚本检查我所绘制的随机椭圆是否属于更复杂的形状。任何帮助将不胜感激!
这是我的代码:
function stippleCircle(mR, rR, xP, yP, num){
for(i=0; i<num; i++){
noStroke();
println("stip " + i);
var eRad = mR; //maximum ellipse radius
var ranRad = rR //radius for small ellipses
var xPos = xP; //x position of large ellipse
var yPos = yP; //y position of large ellipse
var eRad = 0;
var xRan = random(xPos - eRad, xPos + eRad);
var yRan = random(yPos - eRad, yPos + eRad);
if(xRan <= xPos && yRan <= yPos){
if((xPos-xRan) * (xPos-xRan) + (yRan-yPos) * (yRan-yPos) <= eRad * eRad){
fill(100, 0, 0, 0); //C
var myEllipse = ellipse(xRan, yRan, ranRad, ranRad);
}
}else if(xRan > xPos && yRan <= yPos){
if((xRan-xPos) * (xRan-xPos) + (yRan-yPos) * (yRan-yPos) <= eRad * eRad){
fill(0, 100, 0, 0); //M
var myEllipse = ellipse(xRan, yRan, ranRad, ranRad);
}
}else if(xRan > xPos && yRan > yPos){
if((xRan-xPos) * (xRan-xPos) + (yPos-yRan) * (yPos-yRan) <= eRad * eRad){
fill(0, 0, 100, 0); //Y
var myEllipse = ellipse(xRan, yRan, ranRad, ranRad);
}
}else if(xRan <= xPos && yRan > yPos){
if((xPos-xRan) * (xPos-xRan) + (yPos-yRan) * (yPos-yRan) <= eRad * eRad){
fill(0, 0, 0, 100);
var myEllipse = ellipse(xRan, yRan, ranRad, ranRad);
}
}
blendMode(myEllipse, BlendMode.SOFT_LIGHT);
opacity(myEllipse, 70);
}
但是,我该如何处理更复杂的形状类似的事情?下面的示例用字母P说明了这一点,可能会使用PathStopoints()或类似的内容。这甚至可能吗?也许我应该从比字母更简单但比椭圆更复杂的矢量形状开始。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论