SFML community forums

Help => Graphics => Topic started by: Regen on October 06, 2008, 08:34:19 pm

Title: Shape position problem
Post by: Regen on October 06, 2008, 08:34:19 pm
hi!

when i using shapes a get a wierd problem. when i want to look up where they are, GetPosition().x and .y is allways 0.
Right now I am using circles and this i my code:
Code: [Select]
float Plupp::Distance(Plupp *Other){
sf::Vector2<float> ThisCords = this->Shape.GetPosition();

float Dist = sqrt(pow((this->Shape.GetPosition().x - Other->GetShape().GetPosition().x),2)
+ pow((this->Shape.GetPosition().y - Other->GetShape().GetPosition().y),2));

std::cout << ThisCords.x << std::endl;
std::cout << ThisCords.y << std::endl;

return Dist;
}

This is my code to massure the distance between 2 "plupps". The both plupps thinks they is standing on top on eachother even if they is half a screen apart! my output from this is 2 zeroes. I have been having this problem before and i belive I gave up that time.
thanks in advance for any help!

edit: ops, maybe this could be in graphics :oops:
Title: Shape position problem
Post by: Laurent on October 06, 2008, 08:43:38 pm
The position of the shape and the position of its points are completely separate. If create a circle centered on (x, y) its position will still be (0, 0).

If you want to get the position at the center of the shape, create it around the origin and move it with the usual Drawable's functions (Move, SetPosition, ...).
Title: Shape position problem
Post by: Regen on October 06, 2008, 08:59:03 pm
So the GetPosition is only relative to the shape itself?
Sorry but i dont really follow you, is'nt it any function that return the shapes position in the renderwindow?

 :oops:
Title: Shape position problem
Post by: Laurent on October 07, 2008, 07:42:14 am
Quote
So the GetPosition is only relative to the shape itself?

It's rather the points' position that are relative to the shape's one. So if the center of your circle is (100, 200), it will be offseted by (100, 200) from the shape's position (which is the origin by default).
Title: Shape position problem
Post by: Regen on May 27, 2009, 09:19:21 pm
hi, havn't been using sfml for a while now and started some days ago and I stumbled on the same problem, kinda.

i want a sprite to follow the mousepointer using the following code:

Quote
sf::Vector2<int> Temp = GridCord(App);
hoverBlock->GetSprite().SetPosition(Temp.x, Temp.y);


where GridCord(App) returns a position on screen relative to the mouse (which is tested and correct). but the sprite doesn'nt move:(

why?
Title: Shape position problem
Post by: Laurent on May 27, 2009, 10:09:39 pm
Maybe GetSprite() returns a copy instead of a reference to the actual sprite?
Title: Shape position problem
Post by: Regen on May 28, 2009, 02:22:50 pm
Ahhh, thank you so much! of cause it is!:)
Title: Re: Shape position problem
Post by: Regen on November 12, 2012, 02:08:41 pm
So I am back again after a few years with the same problem=/

I want to drawa bunch of dots connected by lines.
First the dots:
   m_shape = Shape::Circle(pos, 5, Color(255, 100, 100));
   m_shape.SetPosition(pos);

Then the lines:
   Vector2f n1Pos = n1->GetPos();
   Vector2f n2Pos = n2->GetPos();

   m_shape = Shape::Line(n1Pos, n2Pos, 3, Color(200, 200, 200));
where n1 and n2 are two list iterators to dots and GetPos is defined as
return m_shape.GetPosition();

These are drawn like this:
   //drawall edges
   for(list<Edge>::iterator it = m_edges.begin(); it != m_edges.end(); it++)
   {
      m_app.Draw(it->GetShape());
   }

   //draw all Nodes
   for(list<Node>::iterator it = m_nodes.begin(); it != m_nodes.end(); it++)
   {
      m_app.Draw(it->GetShape());
   }

The problem is that all the lines are showing up fine but the dotsare not showing.
 If i remove the
   m_shape.SetPosition(pos);
from the dot constructor, it's the opposite :o
Title: Re: Shape position problem
Post by: Laurent on November 12, 2012, 02:31:11 pm
Could you please show a complete and minimal example that reproduces the problem?

And... don't you want to switch to SFML 2?
Title: Re: Shape position problem
Post by: Regen on November 13, 2012, 07:56:59 am
So i tried to change to 2.0 and made it compile but the linking doesnt work to good for me.
Got the
"The application failed to initialize properly (0xc0150002). Click on OK to terminate the application."-error I heared some other people been having on vs 2010, is it the same on vs 2005? Do I need to compile sfml myself? I have tried both with static and dynamic.

sorry for making this thread into some general help-regen-out-thread:(
Title: Re: Shape position problem
Post by: Laurent on November 13, 2012, 04:12:31 pm
Quote
Do I need to compile sfml myself?
If you use VS2005, yes.