Re: [svgwg] Add circular arc path command 'R'. (#767)

Addinf a third point on the elliptic curve is not intuitive, unlike adding
the offpoint curve that connects the two tangeants which gives the correct
rendering at all scales and offers the warranty on bounding boxes. It's not
so easy to define the third (arbitrary) on-curve point on an elliptical
arc.The only advantage it gives is that you don't need any flag to say that
you want the short arc or the long arc, but without a flag it will not draw
both to draw the full ellipse.
If you want to draw a full ellipse with two arcs using 3 on-curve points
for each arc, you need a total of 4 on-curve points.
But  If you want to draw a full ellipse with two arcs using 2 on-curve
points and 1 control for each arc, you need a total of 2 on-curve points,
the same control point, and the flag, and you can reduce it to just 1 arc
by a flag value indicating you want both arcs and not just the short one or
the long one.

My position on elliptical arc is still the most flexible and the easiest:
the ellipitical arc is very much like the very intuitive parametrization of
quadratic Bezier arcs (except that quadratic arcs don't have the
possiblity of the flag to indicate you want a second "long" arc, it only
draws the "short" arc going from the starting point to the ending point and
always passing near the control point defining the intersection of the two
tangeants: if you prolongated the Bezier arc on either side, it would not
connect back to the other point but would go to infinite, with a constant
asymptotic direction which is defined by the constant factors of the second
degree polynom).

But between the two end points, quadratic Bezier arcs and elliptical arcs
are very much the same and have exactly the same parametrization: two
on-curve points, and the same control point (the difference is on the
curvature: the "short" elliptical arc always passes farther from this
control point than the quadratic arc, and the elliptical arc has smoother
curvature distributed all along the arc, while the Bezier arc has a
curvature reaching a maximum near the control point and minimum on the two
end points; the Bezier arcs do not smooth the curvature as much as an
elliptical arc, a cubic Bezier will smooth it but the derivative of the
curvature will also not be smooth and this is true for any Bezier with a
finite degree; elliptical arcs are infinitely derivable and always smooth
at all derivatives along their path... like also sinusoidal and hyperbolic
arcs which are not definable in SVG and must be approximated by a series of
small Bezier or elliptical arcs or very small straight segments, i.e. with
many on-curve points).

Note that with a 3D extension of SVG paths and a 2D projection, elliptical
arcs could be used to draw sinusoidal curves, or toric projection curves
with very good accuracy and a very small number of points.

The most obvious extension to SVG would be to have coordinates for points
with more than 2 dimensions (using parentheses to delimit each point) and a
way to project the curve to a plane by dropping some coordinates; it
would work with the "bearing"/"skewing"/"scaling" commands that can change
the transform matrix defined with arbitrary dimensions, and with the
addition of "<" and ">" commands to push/pop the transform matrix from a
stack). Not all points would need to have the same number of coordinates
(any missing coordinate at higher dimensions would be zero). SVG could
support finite dimensions higher than 3 (for actually redering a 3D scene,
including with support of perspectives, you only need 4 dimensions, and a
command to define the projection plane according to the current bearing
direction: the projection plane is a complement vector to the transform
matrix which itself includes the square matrix of the linear transform and
the affine vector; adding the projection is just a final vector applied by
a simple product of two vectors, after the multiplication of the linear
transform and the addition of the affine transform: for 3D with perspective
this is represented by a 4x5 matrix)




Le mar. 12 mai 2020 à 15:05, tatarize <notifications@github.com> a écrit :

> I don't think that's remotely as intuitive as have a start and end and
> give me any point that'll also be in the circular arc.
>
> —
> You are receiving this because you commented.
> Reply to this email directly, view it on GitHub
> <https://github.com/w3c/svgwg/issues/767#issuecomment-627330015>, or
> unsubscribe
> <https://github.com/notifications/unsubscribe-auth/AAKSUGYPT5CLKJJ5W6BWZS3RRFCP3ANCNFSM4J3DXOTQ>
> .
>


-- 
GitHub Notification of comment by verdy-p
Please view or discuss this issue at https://github.com/w3c/svgwg/issues/767#issuecomment-629011834 using your GitHub account

Received on Friday, 15 May 2020 03:57:43 UTC