36 m_cyl_transform_params->axis(), m_cyl_transform_params->orientation());
38 m_cyl_transform_params->orientation(), hcf_frame_y_axis,
39 m_cyl_transform_params->axis(),
pos - m_cyl_transform_params->center());
72 auto endpoint_angle = pos_phi;
73 if (
Utils::abs(pos_phi) < m_central_angle / 2.) {
76 pos_phi > 0. ? m_central_angle / 2. : -m_central_angle / 2.;
83 auto const line_director = (r2_endpoint - r1_endpoint).normalized();
85 auto project_on_line = [](
auto const vec,
auto const line_start,
86 auto const line_director) {
87 return line_start + line_director * ((vec - line_start) * line_director);
90 auto pos_closest_hcf_frame =
91 project_on_line(pos_hcf_frame, r1_endpoint, line_director);
96 if (
Utils::abs(pos_closest_hcf_frame[2]) > m_length / 2.) {
97 pos_closest_hcf_frame =
98 pos_closest_hcf_frame[2] > 0. ? r1_endpoint : r2_endpoint;
102 auto const u = (pos_hcf_frame - pos_closest_hcf_frame).normalize();
104 (pos_hcf_frame - pos_closest_hcf_frame).norm() - 0.5 * m_thickness;
108 dist = d * m_direction;
111 auto const vec_hcf_frame = d *
u;
113 hcf_frame_y_axis, m_cyl_transform_params->axis(),
114 vec_hcf_frame,
true);