Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
| From | Ben Bacarisse <ben.usenet@bsb.me.uk> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: C-Programming |
| Date | 2014-12-19 02:36 +0000 |
| Organization | A noiseless patient Spider |
| Message-ID | <87sigcv010.fsf@bsb.me.uk> (permalink) |
| References | (7 earlier) <kfnppbi6vyy.fsf@x-alumni2.alumni.caltech.edu> <i8jkw.255968$MH.237866@fx12.am4> <a97288fe-4f46-4f91-b09a-83bd780d7c6b@googlegroups.com> <87vbl8yjip.fsf@bsb.me.uk> <3a4d7e80-0f6d-4080-b606-b662d916a0a5@googlegroups.com> |
Malcolm McLean <malcolm.mclean5@btinternet.com> writes:
> On Thursday, December 18, 2014 5:07:03 PM UTC, Ben Bacarisse wrote:
>> Malcolm McLean <malcolm.mclean5@btinternet.com> writes:
>>
>> > If either delta1_x or delta1_y goes over
>> > 0.5, halve all the delta values. If it goes below 0.125, double
>> > them. Then you're sampling at sub-Nyquist frequency, with is 0.5
>> > of the grid and guaranteed a pixel-perfect curve.
>>
>> I don't follow this. My (no doubt naive) attempt to code your halving
>> and doubling does not produce the right curve. Can you give the pseudo
>> code for this pixel-correct version?
>>
> I way over-simplified this.
>
> The forwards differencing gives us three sets of values that represent
> steps in a delta t, say 0.01. To get 100 x, y values, we add delta1
> to our start point. Then we add delta2 to delta1 to give us the
> next increment. Then we add delta3 to delta2 to give us the next
> increment to delta2. That's where it stops, since it's cubic,
> it only has three levels of difference. (You can use the same principle
> for polynomials of arbitrary high degree).
>
> If the step size is too large, we want to halve delta1. But we
> can't just halve delta2 and delta3.
>
> You've got to work back.
>
> I just looked up the formula. However when I check, I see there's
> actually a bug. dt is not halved and doubled, though it is very
> nearly.
I don't follow this.
> while (fabs(firstFDX) + fabs(firstFDY) > 1)
> {
> thirdXprime = thirdFDX / 8;
> secondXprime = secondFDX / 4 - thirdXprime;
> firstXprime = firstFDX / 2;
>
> thirdYprime = thirdFDY / 8;
> secondYprime = secondFDY / 4 - thirdYprime;
> firstYprime = firstFDY / 2;
I think you have a bug. As written, the two curves (equal dt and
adaptive dt) don't match, but I found a paper that describes this method
("Adaptive Forward Differencing for Rendering Curves and Surfaces" by
Lien, Shantz and Pratt) and that has (translated into your form)
firstXprime = firstFDX / 2 - secondXprime / 2;
Anyway, thanks for this. With that correction the two curves match and
I have another adaptive spline method.
> firstFDX = firstXprime;
> secondFDX = secondXprime;
> thirdFDX = thirdXprime;
>
> firstFDY = firstYprime;
> secondFDY = secondYprime;
> thirdFDY = thirdYprime;
>
> dt /= 2;
> }
> while (fabs(firstFDX) + fabs(firstFDY) < 0.25)
> {
> firstXprime = firstFDX * 2 + secondFDX;
> secondXprime = (secondFDX + thirdFDX) * 4;
> thirdXprime = thirdFDX * 8;
>
> firstYprime = firstFDY * 2 + secondFDY;
> secondYprime = (secondFDY + thirdFDY) * 4;
> thirdYprime = thirdFDY * 8;
>
> firstFDX = firstXprime;
> secondFDX = secondXprime;
> thirdFDX = thirdXprime;
>
> firstFDY = firstYprime;
> secondFDY = secondYprime;
> thirdFDY = thirdYprime;
>
> dt *= 2;
> }
--
Ben.
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
C-Programming arvindgupta01031988@gmail.com - 2014-12-06 11:09 -0800
Re: C-Programming "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2014-12-06 11:16 -0800
Re: C-Programming James Kuyper <jameskuyper@verizon.net> - 2014-12-06 14:46 -0500
Re: C-Programming Kleuske <kleuske@nowhere.net> - 2014-12-07 10:48 +0000
Re: C-Programming Keith Thompson <kst-u@mib.org> - 2014-12-07 07:43 -0800
Re: C-Programming Siri Crews <chine.bleu@yahoo.com> - 2014-12-06 12:22 -0800
Re: C-Programming gordonb.ukogy@burditt.org (Gordon Burditt) - 2014-12-19 03:29 -0600
Re: C-Programming Siri Crews <chine.bleu@yahoo.com> - 2014-12-19 01:34 -0800
Re: C-Programming Richard Heathfield <invalid@see.sig.invalid> - 2014-12-19 10:18 +0000
Re: C-Programming jacob navia <jacob@spamsink.net> - 2014-12-19 17:42 +0100
Re: C-Programming rouben@shadow.(none) (Rouben Rostamian) - 2014-12-19 19:00 +0000
Re: C-Programming jacob navia <jacob@spamsink.net> - 2014-12-19 20:31 +0100
Re: C-Programming jacob navia <jacob@spamsink.net> - 2014-12-19 20:42 +0100
Re: C-Programming Keith Thompson <kst-u@mib.org> - 2014-12-19 11:54 -0800
Re: C-Programming raltbos@xs4all.nl (Richard Bos) - 2014-12-19 11:29 +0000
Re: C-Programming Noob <root@127.0.0.1> - 2014-12-20 10:22 +0100
Re: C-Programming Keith Thompson <kst-u@mib.org> - 2014-12-20 11:48 -0800
Re: C-Programming Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-12-19 03:33 -0800
Re: C-Programming Siri Crews <chine.bleu@yahoo.com> - 2014-12-19 04:02 -0800
Re: C-Programming glen herrmannsfeldt <gah@ugcs.caltech.edu> - 2014-12-19 17:28 +0000
Re: C-Programming jacob navia <jacob@spamsink.net> - 2014-12-06 21:27 +0100
Re: C-Programming Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-12-07 13:07 +0000
Re: C-Programming David Brown <david.brown@hesbynett.no> - 2014-12-08 01:24 +0100
Re: C-Programming Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-16 04:44 -0800
Re: C-Programming David Brown <david.brown@hesbynett.no> - 2014-12-16 15:02 +0100
Re: C-Programming BartC <bc@freeuk.com> - 2014-12-16 18:27 +0000
Re: C-Programming David Brown <david.brown@hesbynett.no> - 2014-12-17 01:01 +0100
Re: C-Programming BartC <bc@freeuk.com> - 2014-12-17 00:23 +0000
Re: C-Programming Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-16 16:30 -0800
Re: C-Programming David Brown <david.brown@hesbynett.no> - 2014-12-17 02:18 +0100
Re: C-Programming Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-16 18:23 -0800
Re: C-Programming David Brown <david.brown@hesbynett.no> - 2014-12-17 09:59 +0100
Re: C-Programming Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-17 08:52 -0800
Re: C-Programming David Brown <david.brown@hesbynett.no> - 2014-12-18 11:11 +0100
Re: C-Programming Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-18 09:49 -0800
Re: C-Programming JohnF <john@please.see.sig.for.email.com> - 2014-12-17 10:14 +0000
Re: C-Programming Richard Heathfield <invalid@see.sig.invalid> - 2014-12-17 14:26 +0000
Re: C-Programming Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-17 09:13 -0800
Re: C-Programming Richard Heathfield <invalid@see.sig.invalid> - 2014-12-17 17:34 +0000
Re: C-Programming Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-12-17 23:26 -0800
Re: C-Programming Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-12-18 00:21 -0800
Re: C-Programming Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-12-18 17:06 +0000
Re: C-Programming Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-12-18 09:29 -0800
Re: C-Programming Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-12-19 02:36 +0000
Re: C-Programming Malcolm McLean <malcolm.mclean5@btinternet.com> - 2014-12-19 03:41 -0800
Re: C-Programming Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-18 08:52 -0800
Re: C-Programming Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-12-17 23:23 +0000
Re: C-Programming BartC <bc@freeuk.com> - 2014-12-18 00:02 +0000
Re: C-Programming Richard Heathfield <invalid@see.sig.invalid> - 2014-12-18 00:15 +0000
Re: C-Programming Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-12-18 16:37 +0000
Re: C-Programming Richard Heathfield <invalid@see.sig.invalid> - 2014-12-18 18:08 +0000
Re: C-Programming Ben Bacarisse <ben.usenet@bsb.me.uk> - 2014-12-19 02:40 +0000
Re: C-Programming Richard Heathfield <invalid@see.sig.invalid> - 2014-12-19 07:51 +0000
Re: C-Programming Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-17 09:07 -0800
Re: C-Programming JohnF <john@please.see.sig.for.email.com> - 2014-12-19 04:22 +0000
Re: C-Programming Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-19 09:22 -0800
Re: C-Programming Greg Martin <greg.at.softsprocket@dot.com> - 2014-12-20 02:39 +0000
Re: C-Programming JohnF <john@please.see.sig.for.email.com> - 2014-12-20 06:57 +0000
Re: C-Programming Tim Rentsch <txr@alumni.caltech.edu> - 2014-12-15 23:53 -0800
csiph-web