Flutter Impeller
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: