Cheers for the reply, it's helped me a lot, in fact it feels so close
now I can almost taste it.

Thing is, its not quite getting the maths right somehow, here's what
it looks like;

http://graphicfilth.com/uncommon/bin-release/uncommon.html

as you can see, the arrows are mostly hanging around the top and not
pointing from the right place.

here's the code that I've got;

var myArr:Mesh = this.getChildByName(peep.name+"arrow") as Mesh;

//we want to make the arrows live on the outside of the band icon, so
we need to do some trig to get an angle
//then move it to the outside of the icon along that angle

//opposite
var op:Number = peep.scenePosition.y-scenePosition.y;

var v1sq:Number = Math.sqrt
((peep.scenePosition.x*peep.scenePosition.x) +
(peep.scenePosition.z*peep.scenePosition.z));
var v0sq:Number = Math.sqrt((scenePosition.x*scenePosition.x) +
(scenePosition.z*scenePosition.z));
//adjacent
var ad:Number = v1sq - v0sq;

//Hopefully the angle
var pointing:Number = Math.atan(op/-ad);

//make sure its not gone wrong
if(!isNaN(pointing)){
        myArr.vertices[0].adjust(Math.sin(pointing)*75,0,Math.cos(pointing)
*75);
        myArr.vertices[1].adjust(myArr.vertices[0].x+5,0,myArr.vertices[0].z
+5);
}
//place last vert at the band member
myArr.vertices[2].adjust(peep.scenePosition.x-scenePosition.x,
                                                
scenePosition.z-peep.scenePosition.z,
                                                
peep.scenePosition.y-scenePosition.y);


I'm currently trying to swap numbers around a bit, for some reason
(possibly due to a rotation) my y/z coords seem to have gotten a bit
garbled, although so far I've only managed to generate variations on
the same broken theme.

I suppose it's also possible that my placement code is wrong.

Thanks again for the help,

Martin


On Mar 24, 2:13 pm, "pure....@googlemail.com"
<pure....@googlemail.com> wrote:
> this is how i would do it:
> first decide "what angle" i want to get, because there is more than
> 1angle between two points in a 3-dimensional system
> i assume you want the gradient-angle, so you have to eliminate the 3rd
> koordinate:
> x/y/z; x1/y1/z1  ->
> _distX = ( Math.sqrt( x1² + z1² ) - ( Math.sqrt( x² + z² ) )
> _distY = y1 - y
>
> now can continue with:   angle = Math.atan ( _distY / _distX )
>
> maybe this helps you a little bit, not sure if that is excactly what
> you wanted
>
> cheers olsn
>
> On 24 Mrz., 14:18, Manic <mar...@graphicfilth.com> wrote:
>
> > Hi,
>
> > I'm trying to find the angle between two Number3Ds, everything I've
> > tried so far hasn't worked, I've had a go with using the screen
> > position, the scene position, the relative positions... everything.
>
> > I want to make the large end of the arrows sit around the outside of
> > the striped box, forming a sort of halo around it.
>
> >http://graphicfilth.com/uncommon/bin-release/uncommon.html
>
> > Here's what I understand so far...
>
> > The arrows are created as children of the main box, so vertex 0 is at
> > 0,0,0 while vertex 2 is assigned to the location of it's blue circle
> > using this code;
>
> > theArrow.vertices[2].adjust(peep.scenePosition.x-scenePosition.x,
> > scenePosition.z-peep.scenePosition.z,   peep.scenePosition.y-
> > scenePosition.y);
>
> > Now, I don't know why this code works, in my mind it's wrong, but it
> > does work, so I guess I'm wrong.
>
> > So, if I'm working using relative coordinates from the Arrow, I should
> > just be able to use the location of Vertex 2 and drop that into Trig,
> > something like;
>
> > angle = Math.atan(theArrow.vertices[2].y/theArrow.vertices[2].x)
>
> > then use that angle to plot the other 2 vertices around the center of
> > the main object.
>
> > However it never returns accurate results, I've tried with every
> > possible combination of x/y/z over x/y/z from the coords, but nothing
> > seems to work.
>
> > I'm tearing my hair out here, because I'm sure I've got the principle,
> > but not the execution.
>
> > Thanks in advance
>
> > Martin

Reply via email to