Exemplo n.º 1
0
Triangle::Triangle(Vertex* a_first, Vertex* a_second, Vertex* a_third)
: m_first(a_first), m_second(a_second), m_third(a_third)
{
  Vector2f centroid;
  centroid.x = a_first->m_position.x + ((2 / 3)*a_second->m_position.x - a_first->m_position.x);
  centroid.y = a_first->m_position.y + ((2 / 3)*a_second->m_position.y - a_first->m_position.y);

  float distToFirst = centroid.Distance(a_first->m_position);
  float distToSecond = centroid.Distance(a_second->m_position);
  float distToThird = centroid.Distance(a_third->m_position);
  float totalDist = distToFirst + distToSecond + distToThird;

  r = (m_first->r * distToFirst + m_second->r * distToSecond + m_third->r * distToThird) / totalDist;
  g = (m_first->g * distToFirst + m_second->g * distToSecond + m_third->g * distToThird) / totalDist;
  b = (m_first->b * distToFirst + m_second->b * distToSecond + m_third->b * distToThird) / totalDist;
}
Exemplo n.º 2
0
float CircularFilterRegion::GetStrengthDropoffScale(Vector2f pos) const
{
    if (DropoffRadiusPercent == 0.0f)
    {
        return 1.0f;
    }

    float maxDist = Mathf::Abs(DropoffRadiusPercent) * Radius,
          dist = pos.Distance(Center);
    if (DropoffRadiusPercent > 0.0f)
    {
        return Mathf::Clamp(Mathf::Remap(0, maxDist, 1.0f, 0.0f, dist), 0.0f, 1.0f);
    }
    else
    {
        return Mathf::Clamp(Mathf::Remap(0, maxDist, 0.0f, 1.0f, dist), 0.0f, 1.0f);
    }
}