void LineSegment::setThickness(float thickness) { sf::Vector2f direction = m_endPoint - m_startPoint; sf::Vector2f unitDirection = direction / std::sqrt(direction.x * direction.x + direction.y * direction.y); sf::Vector2f unitPerpendicular(-unitDirection.y, unitDirection.x); float halfThick = thickness / 2.f; m_vertexArray[0].position = halfThick * unitPerpendicular; m_vertexArray[1].position = direction + halfThick * unitPerpendicular; m_vertexArray[2].position = direction - halfThick * unitPerpendicular; m_vertexArray[3].position = -halfThick * unitPerpendicular; setPosition(m_startPoint); }
Line(const sf::Vector2f &point1, const sf::Vector2f &point2, float t = 5.0f, const sf::Color &c = sf::Color::White) : thickness(t), color(c) { sf::Vector2f direction = point2 - point1; sf::Vector2f unitDirection = direction / std::sqrt(direction.x * direction.x + direction.y * direction.y); sf::Vector2f unitPerpendicular(-unitDirection.y, unitDirection.x); sf::Vector2f offset = (thickness / 2.0f) * unitPerpendicular; vertices[0].position = point1 + offset; vertices[1].position = point2 + offset; vertices[2].position = point2 - offset; vertices[3].position = point1 - offset; for (size_t i = 0; i < 4; i++) { vertices[i].color = color; } }