Thank you for the responses! This solution using quadratic bezier interpolation wound up working for me.
points = node.GetAllPoints()
if len(points) < 3:
# The first three points of the point object.
a, b, c = points[:3]
samples = 6
arcPoints = list()
for i in range(samples):
t = ...
One very simple way to do it is to just find the straight line distance between the points A and C. Divide that distance by the number of points you want to subdivide+1. Then starting at A moving along the line formed between A and C add that distance for each subdivision. This gives a nice even subdivision without having to argue with PI.
To get the point ...
A texture that stores distance from the edge of the shape, like you described, is called a "distance field" (you'll find lots of results if you google that phrase). Distance fields can be calculated efficiently on the GPU using the jump flooding algorithm (JFA).
This is a multi-pass algorithm that works by sampling pixels at a distance of first ½ ...