Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #55030

Re: C-Programming

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>

Show all headers | View raw


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


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