Пример #1
0
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);
}
Пример #2
0
	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;
		}
	}