- From: Philippe Verdy via GitHub <sysbot+gh@w3.org>
- Date: Fri, 15 May 2020 03:57:42 +0000
- To: public-svg-issues@w3.org
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