RE: [geometry] Review request before LC

-----Original Message-----
From: Dirk Schulze [] 
Sent: Thursday, June 12, 2014 3:33 PM
To: <>; FX; w3c-css-wg; SVG public list
Subject: [geometry] Review request before LC


The editors of Geometry Interfaces[1] asked for reviews for the spec 1.5
weeks ago. We got a lot of great feedback on the W3C mailing lists, vendor
mailing lists and private messages. I want to thank every one very much for
the time spend in reviews.

We looked, discussed and incorporated the feedback and believe that Geometry
Interfaces[1] is ready for Last Call Working Draft. We would like to give
everyone another week to look over the spec and ask the CSS and SVG Working
Groups to publish the Last Call Working Draft at Wednesday next week. If
members of the Working Groups request more time for reviewing the spec we
are happy to wait another week before asking for LCWD.



Hi Dirk,

A year ago or so Doug Schepers had asked for feedback about something that
sounds related:

I submitted the following list of a couple of score of requirements that I
don't see listed in the draft document. Conceivably some of it is there, and
conceivably the purposes to which Doug's input were put are different than
the Geometry Interfaces thing, but having two such similar things seems odd.
At the same time, not addressing the issues raised seems odd.

I believe there was another email in which I donated working code
(JavaScript) for some of the functionality mentioned below.

-----------------two emails from me from 2013-------------
From: Dailey, David P.
Sent: Friday, July 26, 2013 8:59 AM
To: Doug Schepers; David Dailey
Subject: RE: things often done in geometrical applications

A couple of other things that would be nice 1. Given an arbitrary convex
quadrilateral, return the unique ellipse tangent to the four sides: -- useful for perspective

2. Given two circles return the four lines tangent to both (in the typical
situation of disjoint circles)
(Jim Wilson at UGA tells me that this technique was undoubtedly known by
Euclid and students)

3.  Given a line arrangement ( ) return the collection
of polygons into which the lines have divided the viewport.

4. Given three (nonoverlapping) circles, return the eight Apollonian circles
tangent to all three

That these problems and their solutions have endured for millennia is plenty
of justification for their utility to me.

From: Doug Schepers []
Sent: Monday, July 01, 2013 1:25 AM
To: David Dailey
Subject: Re: things often done in geometrical applications

Hi, David-

On 6/28/13 4:06 PM, David Dailey wrote:
> Thanks for getting this going. Coincidentally, as it's creation was 
> being discussed, I in the midst of a project that could have used the 
> fruits of this labor (assuming they might exist in a couple of years).

I've seen so many requests for something like this over the years that it
was bound to overlap several people's projects that need it. :)

Thanks for this list to help us get started. I have a few comments on
specific items, inline...

> Here's just a quick list of things that come to mind that one might 
> often wish to do
> Intersecting things, as per Kevin Lindsay's work (wasn't some of this 
> already in SVG 1.2?):
>                  Lines, circles, ellipses, bezier (c and q) all with 
> one another

I've added this to the use cases and requirements page [1]. Note that Kevin
has pointed out some flaws and limitations in his library, and in using it,
I've found that you have to know the segment/line type before performing an
intersection test, which limits its usefulness.

This makes it a good candidate for addressing in a browser-native API, in my

> Points closest to one another  on various pairs of curves (simplest 
> being two non parallel lines or a line and circle)
> Lines tangent to a given curve
>                  Closest to a point
>                  At a point
>                  Passing through a poin
> Lines tangent to each of two
>                  Circles (see
> .3/Tangents.html
> )
>                  Ellipses

I could see some of this being useful in a drawing tool.

> Tweening - interpolating curves that are intermediate in shape between 
> two given curves (see the code that comes with <replicate>

Kevin had a library (or script) for this as well, but I agree it could spawn
some good requirements.

> Extrapolation - given curves A and B produce C so that B is 1/nth of 
> the way from A to C.
> Given a set of n lines that divide the plane into (n^2 + n +2)/2 
> regions - convert those regions to convex polygons returning a 
> collection of polygons
> Given a smooth path, convert it to a polygon having n edges for given
> n>2 most closely resembling the path.
> Given a polygon (convex or concave) or more generally,
>                  Form a triangulation of its interior
>                  Form a slight deformation of it (for glyphs we might 
> consider arbitrary  svg <path>s rather than just polygons

You've lost me here. What sort of use cases would these address? Even just
some illustrative examples would help.

>                  Produce a smoothed version (see 
> -- draw a 
> rectangle, select it (by clicking on it) and then choose Smooth from 
> the menu that appears)

Smoothing curves/shapes is really useful for drawing apps, especially those
that have a distributed shared canvas, since it results in simpler paths to

> Given n points
>                  Find a polygon passing through them
>                  Produce a Voronoi diagram
> Produce random
>                  N-gon
>                  Smooth Bezier curves that pass through N control 
> points and preserve continuous first derivatives
>                  Tessellations (polygonal, or rectangular - think HTML 
> tables with colspan and rowspan)

These seem more like things you'd do in script, maybe using a geometry API
for parts, rather than operations of a geometry API itself. But maybe I'm
missing something.

> That such things are useful (hence implying the existence of use 
> cases) seems obvious through a simple glance at the last 2500 years of 
> progress in algebra, mensuration and geometry.

We'll have a much stronger case to bring to the browser implementers if we
reinforce our requirements with explicit use cases. It will also help us
focus on the highest-priority items.

> BTW, Inkscape has some of this stuff already, as does <replicate>, 
> neither of which I saw in the script library listed in the wiki.

Like it says on the wiki, that page was a rough first draft, and anyone in
the Community Group can edit it.

(That said, Inkscape isn't a script library... but all those links were just
for inspiration anyway.)



Received on Thursday, 12 June 2014 20:53:16 UTC