File indexing completed on 2024-12-15 04:01:12
0001 /* 0002 * SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "segment.hpp" 0010 0011 namespace glaxnimate::math::bezier { 0012 0013 0014 struct BezierStruts 0015 { 0016 QPointF B; ///< Point on a bezier segment 0017 qreal t; ///< Bezier parameter in (0,1) (should never be 0 or 1) 0018 QPointF e1; ///< Linear handles in de casteljau lerp(e1, e2, t) = B 0019 QPointF e2; 0020 }; 0021 0022 0023 QPointF get_quadratic_handle(const math::bezier::BezierSegment& segment, const QPointF& B, qreal t); 0024 0025 math::bezier::BezierSegment cubic_segment_from_struts( 0026 const math::bezier::BezierSegment& segment, 0027 const BezierStruts& struts 0028 ); 0029 0030 BezierStruts cubic_struts_idealized(const math::bezier::BezierSegment& segment, const QPointF& B); 0031 0032 struct ProjectResult; 0033 0034 BezierStruts cubic_struts_projection( 0035 const math::bezier::BezierSegment& segment, 0036 const QPointF& B, 0037 const math::bezier::ProjectResult& projection 0038 ); 0039 0040 } // namespace glaxnimate::math::bezier