Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Gnome/gsk/gpu/shaders/   (Gnome Linux Desktop Version 4.23.2©)  Datei vom 30.5.2026 mit Größe 785 B image not shown  

Quelle  ellipse.glsl   Sprache: unbekannt

 
Spracherkennung für: .glsl vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

#ifndef _ELLIPSE_
#define _ELLIPSE_

struct Ellipse
{
  vec2 center;
  vec2 radius;
};

float
ellipse_distance (Ellipse r, vec2 p)
{
  vec2 e = r.radius;
  p = p - r.center;

  if (e.x == e.y)
    return length (p) - e.x;

  /* from https://www.shadertoy.com/view/tt3yz7 */
  vec2 pAbs = abs(p);
  vec2 ei = 1.0 / e;
  vec2 e2 = e*e;
  vec2 ve = ei * vec2(e2.x - e2.y, e2.y - e2.x);
  
  vec2 t = vec2(0.707106781186547520.70710678118654752);
  for (int i = 0; i < 3; i++) {
      vec2 v = ve*t*t*t;
      vec2 u = normalize(pAbs - v) * length(t * e - v);
      vec2 w = ei * (v + u);
      t = normalize(clamp(w, 0.01.0));
  }
  
  vec2 nearestAbs = t * e;
  float dist = length(pAbs - nearestAbs);
  return dot(pAbs, pAbs) < dot(nearestAbs, nearestAbs) ? -dist : dist;
}

#endif

[Dauer der Verarbeitung: 0.11 Sekunden, vorverarbeitet 2026-07-02]