get_lower_upper (src/airfoil_aero/polar_gen.jl:68) takes the point with y < 0 nearest the crease as the lower surface. On a cambered canopy section the whole lower surface can sit at y > 0 near the crease. The point it picks is then one just below the chord line, at y ≈ −0.0001 on mid-span sections of data/TUDELFT_V3_KITE/V3_25.obj. deform_section uses that height as the hinge for a negative delta (flip_thickness_neg), so the flap turns about a point near the chord line rather than about the lower surface.
What I would do: take the lower-surface point at the crease chord station, i.e. the second crossing of the vertical line x = crease_frac with the contour, not the nearest point below y = 0. This moves the hinge for every negative deflection of a cambered section, so it changes existing polars.
Found while fixing #321.
get_lower_upper(src/airfoil_aero/polar_gen.jl:68) takes the point withy < 0nearest the crease as the lower surface. On a cambered canopy section the whole lower surface can sit aty > 0near the crease. The point it picks is then one just below the chord line, at y ≈ −0.0001 on mid-span sections ofdata/TUDELFT_V3_KITE/V3_25.obj.deform_sectionuses that height as the hinge for a negativedelta(flip_thickness_neg), so the flap turns about a point near the chord line rather than about the lower surface.What I would do: take the lower-surface point at the crease chord station, i.e. the second crossing of the vertical line
x = crease_fracwith the contour, not the nearest point belowy = 0. This moves the hinge for every negative deflection of a cambered section, so it changes existing polars.Found while fixing #321.