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