Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

In this Discussion

Dot Analysis - Visual Simulator (Need help creating the code)

edited May 6 in General Posts: 58

Hello everybody,

I was hoping someone would know how to create the following code -> because i just don’t know how.

I am conducting a visual analysis of motion by using dots.
The image I attached expresses what i am trying to produce with the code - which is explained below:

  1. the red dot moves along the negative of the x,y axis on the yellow arrow
  2. the red dot then returns back to its origin (depicted by the yellow curved arrow - yellow arrow is not part of code)
  3. the red dot is to repeat this 25% of the time (the time being 7 seconds) so 25% of every 7 seconds
  4. all the gray dots are slowly moving, amongst themselves in small circles, constantly at all times (depicted by the blue arrow) sort of like an orbit


  • Posts: 871

    Here is a starter for 10. Probably not exactly what you were after, but should give you enough of an idea to get going

    -- Dots viewer.mode=FULLSCREEN -- Use this function to perform your initial setup function setup() redDot=vec2(WIDTH/2,HEIGHT/2) --initial position of red dot dotSize=100 --size of dots redDotSpd=3 --speed of red dot redDotTravel=0 --how far the red dot has travelled redDotTravelLimit=100 --the limit after which the red dot disappears --adjust the redDotSpd and RedDotTravel to be 1/4 of 7s greyDots={vec2(200,400),vec2(300,600),vec2(400,800),vec2(700,900),vec2(900,800),vec2(1100,600),vec2(800,300)} --centre of each grey dot greyDotSpd=3 --orbital speed of grey dots greyOrbitSize=20 --the size of the grey dot orbit end -- This function gets called once every frame function draw() -- This sets a dark background color background(40, 40, 50) noStroke() redDotTravel = redDotTravel + 1 fill(255,0,0) ellipse(redDot.x,redDot.y,dotSize) if redDotTravel<redDotTravelLimit then redDot.x = redDot.x - redDotSpd redDot.y = redDot.y - redDotSpd else redDot=vec2(WIDTH/2,HEIGHT/2) end if redDotTravel>4*redDotTravelLimit then redDotTravel=0 end fill(200) for i, g in pairs(greyDots) do ellipse(g.x+greyOrbitSize*math.sin(ElapsedTime*greyDotSpd),g.y+greyOrbitSize*math.cos(ElapsedTime*greyDotSpd),dotSize) end end
  • Posts: 58

    Thank you!

    Yes this will definitely set me on my path.

    I will try to get each dot to move individually, within its own orbit.. instead of all in unified movement.

    This is perfect! thank you - thank you :) :) :)

Sign In or Register to comment.