56 Vec3f s = p - m_torus->Center();
57 float planex = s.dot(m_hcs[0].Data());
58 float planey = s.dot(m_hcs[1].Data());
59 param->first = std::atan2(planey, planex);
60 float minory = s.dot(m_torus->AxisDirection());
61 float minorx = std::sqrt(planex * planex + planey * planey) - m_torus->MajorRadius();
62 param->second = std::atan2(minory, minorx);
63 if (m_torus->IsAppleShaped())
65 if (abs(param->second) > m_torus->AppleCutOffAngle())
68 if (m_torus->MajorRadius() < m_torus->MinorRadius() * 2)
70 param->first *= m_torus->MajorRadius() + m_torus->MinorRadius();
74 param->first *= m_torus->MajorRadius();
76 param->second *= m_torus->MinorRadius();
82 float vangle = v / m_torus->MinorRadius();
83 float minorx = std::cos(vangle);
84 float minory = std::sin(vangle);
85 minorx = m_torus->MinorRadius() * minorx + m_torus->MajorRadius();
86 minory *= m_torus->MinorRadius();
87 Vec3f pp = minorx *
Vec3f(m_hcs[0].Data()) + minory * m_torus->AxisDirection();
89 float majorRadius = (m_torus->MajorRadius() < m_torus->MinorRadius() * 2)
90 ? m_torus->MajorRadius() + m_torus->MinorRadius()
91 : m_torus->MajorRadius();
92 float uangle = u / majorRadius;
94 m_torus->AxisDirection()[0],
95 m_torus->AxisDirection()[1],
96 m_torus->AxisDirection()[2]);
98 *p += m_torus->Center();
105 float vangle = v / m_torus->MinorRadius();
106 float minorx = std::cos(vangle);
107 float minory = std::sin(vangle);
108 Vec3f nn = minorx *
Vec3f(m_hcs[0].Data()) + minory * m_torus->AxisDirection();
109 minorx = m_torus->MinorRadius() * minorx + m_torus->MajorRadius();
110 minory *= m_torus->MinorRadius();
111 Vec3f pp = minorx *
Vec3f(m_hcs[0].Data()) + minory * m_torus->AxisDirection();
113 float majorRadius = (m_torus->MajorRadius() < m_torus->MinorRadius() * 2)
114 ? m_torus->MajorRadius() + m_torus->MinorRadius()
115 : m_torus->MajorRadius();
116 float uangle = u / majorRadius;
117 q.RotationRad(uangle,
118 m_torus->AxisDirection()[0],
119 m_torus->AxisDirection()[1],
120 m_torus->AxisDirection()[2]);
123 *p += m_torus->Center();
void WrapComponents(const GfxTL::AABox< GfxTL::Vector2Df > &bbox, float epsilon, size_t uextent, size_t vextent, MiscLib::Vector< int > *componentImg, MiscLib::Vector< std::pair< int, size_t > > *labels) const