Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 如何使用mouseClicked函数以随机大小缩放图形,而图形不会丢失它';s整体形状p5.js_Function_Scale_Mouseclick Event_P5.js - Fatal编程技术网

Function 如何使用mouseClicked函数以随机大小缩放图形,而图形不会丢失它';s整体形状p5.js

Function 如何使用mouseClicked函数以随机大小缩放图形,而图形不会丢失它';s整体形状p5.js,function,scale,mouseclick-event,p5.js,Function,Scale,Mouseclick Event,P5.js,我有一张画在里面的画布。我的目标是使用mouseClicked函数生成图形,并在画布上的任意位置以任意大小绘制(使用mouseClicked函数),而不会丢失其形状。形状的比例正确,而且它们似乎要到正确的x和y坐标;但是,当图形缩小时,形状会展开,当图形放大时,形状会移近。如何缩放图形,使其相对于x和y坐标,并且不丢失其整体形状 函数设置(){ createCanvas(800800); 背景(“红色”); } 函数draw(){} 米老鼠(米老鼠,米老鼠,米老鼠大小){ //耳朵 笔划(“

我有一张画在里面的画布。我的目标是使用mouseClicked函数生成图形,并在画布上的任意位置以任意大小绘制(使用mouseClicked函数),而不会丢失其形状。形状的比例正确,而且它们似乎要到正确的x和y坐标;但是,当图形缩小时,形状会展开,当图形放大时,形状会移近。如何缩放图形,使其相对于x和y坐标,并且不丢失其整体形状

函数设置(){
createCanvas(800800);
背景(“红色”);
} 
函数draw(){}
米老鼠(米老鼠,米老鼠,米老鼠大小){
//耳朵
笔划(“黑色”);
冲程重量(4);
填充(“黑色”);
椭圆(米老鼠,米老鼠,米老鼠大小,米老鼠大小);
椭圆(米老鼠+170,米老鼠,米老鼠大小,米老鼠大小);
//头
笔划(“黑色”);
冲程重量(4);
填充(“黑色”);
椭圆(米老鼠+85,米老鼠+90,米老鼠大小*1.5,米老鼠大小*1.5);
}
函数mouseClicked(){
var mickeySize=随机(0,宽度/5);
drawMickey(mouseX、mouseY、mickeySize)
}

您可能应该查看
map()
函数,它将一个数字从一个范围重新映射到另一个范围。您可以使用它来获得根据大小绘制椭圆的距离,
贴图(米老鼠大小,0,宽度/5,20,85)
。正确使用此处的函数:
希望这能让你走上正轨。

对于这样的问题,你能做的最好的事情就是拿出一些图表,画一些例子。考虑底部圆的中心在哪里,顶部圆圈在哪里与它有关。

您可能希望相对于底部圆定位顶部圆,同时考虑圆的大小

下面是一个小例子:

function setup() { 
  createCanvas(800, 800);
} 

function draw() {

    var circleX = 600;
    var circleY = 400;
    var circleSize = 50;

    ellipse(circleX, circleY, circleSize, circleSize);
    ellipse(circleX - circleSize/2, circleY - circleSize/2, circleSize/2, circleSize/2);
    ellipse(circleX + circleSize/2, circleY - circleSize/2, circleSize/2, circleSize/2);
}
就像我说的,你能做的最好的事情就是画出一堆例子,直到你注意到一个模式。如果你仍然有问题,请在一个新的问题帖子中发布这样的问题。祝你好运