pnz1337
pnz1337

Reputation: 246

face to minimum heading difference

How can I face or rotate or set the heading of an agent (turtle for example) to that an element of a patch-set which needs minimum rotation.

So the agent has a initial heading, and we have a patch-set (for example 5 patches in a cone), and I would like to face the agent that one which is at minimum in angle difference. I don't want to use patch-ahead because it can be one patch backward if that is the only one.

I tried some combinations with these commands: min-one-of towards myself self heading subtract-headings towardsxy face - 180

Thank you in advance.

Upvotes: 2

Views: 273

Answers (1)

Alan
Alan

Reputation: 9610

Are you having trouble getting the heading differences with subtract headings? Then you can try this:

to-report abs-hdiff [#t #p]
  let _current [heading] of #t
  let _new [towards #p] of #t
  report abs (subtract-headings _current _new)
end

For example:

to test
  ca
  ask n-of 5 patches [set pcolor red]
  let _patches (patches with [pcolor = red])
  crt 1
  ask turtle 0 [
    hatch 1 [pen-down fd 10 die] ;just to see old heading
    face min-one-of _patches [abs-hdiff myself self]
  ]
end

Upvotes: 3

Related Questions