I did a little thinking last Saturday. I looked up the equation for a tear drop. Then I turned it upside down and leaned it a little right and left. Here is how it came out on Tuesday.
void loop() { X=tipX; Y=tipY; WBPMove(); digitalWrite(13,HIGH); //turns on "erase the board" led while (nineTen(1)){} nineTen(0); digitalWrite(13,LOW); //turns off "erase the board" led for (Size=0;Size<10;Size=Size+0.25){ for (theta=0;theta<33*PI/24+.0001;theta=theta+0.01){ tearY=-cos(theta)*Size+Size+tipY; tearX=sin(theta)*sin(theta/2)*Size+tipX; tearDistance=sqrt((tearX-tipX)*(tearX-tipX)+(tearY-tipY)*(tearY-tipY)); tearAngle=atan2(tearY-tipY,tearX-tipX); X=cos(tearAngle-(PI/6))*tearDistance+tipX; Y=sin(tearAngle-(PI/6))*tearDistance+tipY; WBPMove(); //theta = theta +0.1; }
Just another idea Larry...
ReplyDeletehttp://mesalioasi.blogspot.com/
gamow, what language is that?
ReplyDeletedo you mean the blog language?
ReplyDeleteSpanish, from argentina
I am also developing a vplotter, but with synchronous belts instead strings
Here is a bit of the code.
ReplyDeletefloat tearAngle=0;
float tearDistance=0;
float tearX=0;
float tearY=0;
float tipX=0;
float tipY=-8;
float Size=1;
float theta=0;
void loop() {
X=tipX;
Y=tipY;
WBPMove();
digitalWrite(13,HIGH); //turns on "erase the board" led
while (nineTen(1)){}
nineTen(0);
digitalWrite(13,LOW); //turns off "erase the board" led
for (Size=0;Size<10;Size=Size+0.25){
for (theta=0;theta<33*PI/24+.0001;theta=theta+0.01){
tearY=-cos(theta)*Size+Size+tipY;
tearX=sin(theta)*sin(theta/2)*Size+tipX;
tearDistance=sqrt((tearX-tipX)*(tearX-tipX)+(tearY-tipY)*(tearY-tipY));
tearAngle=atan2(tearY-tipY,tearX-tipX);
X=cos(tearAngle-(PI/6))*tearDistance+tipX;
Y=sin(tearAngle-(PI/6))*tearDistance+tipY;
WBPMove();
//theta = theta +0.1;
}
for (theta=15*PI/24;theta<2*PI+.0001;theta=theta+0.01){
tearY=-cos(theta)*Size+Size+tipY;
tearX=sin(theta)*sin(theta/2)*Size+tipX;
tearDistance=sqrt((tearX-tipX)*(tearX-tipX)+(tearY-tipY)*(tearY-tipY));
tearAngle=atan2(tearY-tipY,tearX-tipX);
X=cos(tearAngle+(PI/6))*tearDistance+tipX;
Y=sin(tearAngle+(PI/6))*tearDistance+tipY;
WBPMove();
//theta = theta +0.1;
}
}
}
This comment has been removed by the author.
ReplyDelete