Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
My super move is not so super after all.
extern void object::Main()

void object::smove(int dist)
    point b = chkpos(dist), pos = this.position;
    //while(distance2d(b, this.position)>1) //Y U NO WORK
        point c = chkpos(20);
        if(topo(c)>this.position.z){motor(0.1,0.1); adjalt(7,8);}

void object::adjalt(int min, int max)
    int alt = this.altitude;
    if(alt<min){while(alt<min){jet(1);alt = this.altitude;}}
    if(alt>max){while(alt>max){jet(-0.65);alt = this.altitude;}}
    if(alt<1 && alt<min){while(alt>min){motor(0.2, 0.2); jet(1);alt = this.altitude;}}

point object::chkpos(int c) //winny bledow przy przelotach w okolicy wysokich struktur
    int a, b, ori = this.orientation;
    point t = this.position, p;
    if(0 <= ori && ori <= 90){ori = 90 - ori; a = c*cos(ori); b = c*sin(ori); p.x=(t.x+a); p.y=(t.y+b);} //I
    if(90 <= ori && ori <= 180){ori = 180 - ori;a = c*cos(ori); b = c*sin(ori); p.x=(t.x-a); p.y=(t.y+b);} // II
    if(180 <= ori && ori <= 270){ori = 270 - ori;a = c*cos(ori); b = c*sin(ori); p.x=(t.x-a); p.y=(t.y-b);} //III
    if(270 <= ori && ori <= 360){ori = 360 - ori;a = c*cos(ori); b = c*sin(ori); p.x=(t.x+a); p.y=(t.y-b);} //IV
    p.z = topo(p);
    return p;
I've tried everything I could. It should slow down and ascend higher if encountered terrain higher than it's altitude. Written for wasp. Help, I don't know what's wrong ;-;

It won't go for set distance, and sometimes it climbs obstacles properly, sometimes don't. Don't know why.
Si vis pace, para bellum.

What is the chkpos function supposed to actually do? Return a point c meters in front of the robot? (I'm too lazy to try to understand the whole code Tongue)

If so... why not just
point object::chkpos(int c)
   point p;
   p.x = this.position.x + cos(this.orientation) * c;
   p.y = this.position.y + sin(this.orientation) * c;
   p.z = topo(p);
   return p;

I can't see any other immediate problems, other than the way you do the altitude choice could probably be done better - I'd just let the wasp stay at around z=max(topo(this.position), chkpos(20))+some_arbitrary_altitude_above_ground. Anyway, your code seems to work fine for me, unless you have some level with terrain changes big enough for it to break.
It seems needlessly complicated to me for some reason.
You can use the wasp's velocity with the chkpos() to return a point x seconds in front of it.
Then adjust the motor to the ratio of these two points' topo().
For jet() I always do a single line:
jet(( targetPosZ - this.position.z ) / smoothingFactor)
My Code Battle League program: MhrodeBattle.txt

Welcome back, Mrocza. You last visited: Sunday, July 7th, 2013, 02:12 pm
(03-28-2017, 07:57 AM)Mrocza Wrote: You can use the wasp's velocity with the chkpos() to return a point x seconds in front of it.
Oh, I totally forgot object.velocity is now a thing... and I'm the one who implemented it Tongue This solution would be even better probably

Forum Jump:

Users browsing this thread: 1 Guest(s)