KiCad PCB EDA Suite
Loading...
Searching...
No Matches
ellipse.cpp
Go to the documentation of this file.
1/*
2 * This program source code file is part of KiCad, a free EDA CAD application.
3 *
4 * Copyright (C) 2022 KiCad Developers, see AUTHORS.txt for contributors.
5 *
6 * This program is free software: you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation, either version 3 of the License, or (at your
9 * option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License along
17 * with this program. If not, see <http://www.gnu.org/licenses/>.
18 */
19
20#include <geometry/ellipse.h>
21
22
23template <typename NumericType>
24ELLIPSE<NumericType>::ELLIPSE( const VECTOR2<NumericType>& aCenter, NumericType aMajorRadius,
25 NumericType aMinorRadius, EDA_ANGLE aRotation, EDA_ANGLE aStartAngle,
26 EDA_ANGLE aEndAngle ) :
27 Center( aCenter ),
28 MajorRadius( aMajorRadius ),
29 MinorRadius( aMinorRadius ),
30 Rotation( aRotation ),
31 StartAngle( aStartAngle ),
32 EndAngle( aEndAngle )
33{
34}
35
36
37template <typename NumericType>
39 const VECTOR2<NumericType>& aMajor, double aRatio,
40 EDA_ANGLE aStartAngle, EDA_ANGLE aEndAngle ) :
41 Center( aCenter ),
42 StartAngle( aStartAngle ),
43 EndAngle( aEndAngle )
44{
45 MajorRadius = aMajor.EuclideanNorm();
46 MinorRadius = NumericType( MajorRadius * aRatio );
47 Rotation = EDA_ANGLE( std::atan2( aMajor.y, aMajor.x ), RADIANS_T );
48}
50template class ELLIPSE<double>;
51template class ELLIPSE<int>;
This class was created to handle importing ellipses from other file formats that support them nativel...
Definition: ellipse.h:34
NumericType MinorRadius
Definition: ellipse.h:69
EDA_ANGLE Rotation
Definition: ellipse.h:70
NumericType MajorRadius
Definition: ellipse.h:68
ELLIPSE()=default
Define a general 2D-vector/point.
Definition: vector2d.h:70
T EuclideanNorm() const
Compute the Euclidean norm of the vector, which is defined as sqrt(x ** 2 + y ** 2).
Definition: vector2d.h:265
@ RADIANS_T
Definition: eda_angle.h:32