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; }
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); } }