Flutter Engine
 
Loading...
Searching...
No Matches
impeller::PathTessellator::Conic Struct Reference

#include <path_tessellator.h>

Public Member Functions

Point Last () const
 
Point Solve (Scalar t) const
 
Scalar SubdivisionCount (Scalar scale) const
 
std::optional< Vector2GetStartDirection () const
 
std::optional< Vector2GetEndDirection () const
 

Public Attributes

const Point p1
 
const Point cp
 
const Point p2
 
const Scalar weight
 

Detailed Description

Definition at line 98 of file path_tessellator.h.

Member Function Documentation

◆ GetEndDirection()

std::optional< Vector2 > impeller::PathTessellator::Conic::GetEndDirection ( ) const
inline

Definition at line 130 of file path_tessellator.h.

130 {
131 if (p2 != cp) {
132 return (p2 - cp).Normalize();
133 }
134 if (p2 != p1) {
135 return (p2 - p1).Normalize();
136 }
137 return std::nullopt;
138 }

References cp, p1, and p2.

◆ GetStartDirection()

std::optional< Vector2 > impeller::PathTessellator::Conic::GetStartDirection ( ) const
inline

Definition at line 120 of file path_tessellator.h.

120 {
121 if (p1 != cp) {
122 return (p1 - cp).Normalize();
123 }
124 if (p1 != p2) {
125 return (p1 - p2).Normalize();
126 }
127 return std::nullopt;
128 }

References cp, p1, and p2.

◆ Last()

Point impeller::PathTessellator::Conic::Last ( ) const
inline

Definition at line 104 of file path_tessellator.h.

104{ return p2; }

References p2.

◆ Solve()

Point impeller::PathTessellator::Conic::Solve ( Scalar  t) const
inline

Definition at line 106 of file path_tessellator.h.

106 {
107 Scalar u = 1.0f - t;
108 Scalar coeff_1 = u * u;
109 Scalar coeff_c = 2 * u * t * weight;
110 Scalar coeff_2 = t * t;
111
112 return (p1 * coeff_1 + cp * coeff_c + p2 * coeff_2) /
113 (coeff_1 + coeff_c + coeff_2);
114 }
float Scalar
Definition scalar.h:19

References cp, p1, p2, and weight.

◆ SubdivisionCount()

Scalar impeller::PathTessellator::Conic::SubdivisionCount ( Scalar  scale) const
inline

Definition at line 116 of file path_tessellator.h.

116 {
117 return ComputeConicSubdivisions(scale, p1, cp, p2, weight);
118 }
Scalar ComputeConicSubdivisions(Scalar scale_factor, Point p0, Point p1, Point p2, Scalar w)

References impeller::ComputeConicSubdivisions(), cp, p1, p2, and weight.

Member Data Documentation

◆ cp

const Point impeller::PathTessellator::Conic::cp

Definition at line 100 of file path_tessellator.h.

Referenced by GetEndDirection(), GetStartDirection(), Solve(), and SubdivisionCount().

◆ p1

const Point impeller::PathTessellator::Conic::p1

Definition at line 99 of file path_tessellator.h.

Referenced by GetEndDirection(), GetStartDirection(), Solve(), and SubdivisionCount().

◆ p2

const Point impeller::PathTessellator::Conic::p2

Definition at line 101 of file path_tessellator.h.

Referenced by GetEndDirection(), GetStartDirection(), Last(), Solve(), and SubdivisionCount().

◆ weight

const Scalar impeller::PathTessellator::Conic::weight

Definition at line 102 of file path_tessellator.h.

Referenced by Solve(), and SubdivisionCount().


The documentation for this struct was generated from the following file: