eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingiterowanie po kwadracie › Re: iterowanie po kwadracie
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.chmurka.net!not-for-mail
    From: g...@n...invalid (Adam Wysocki)
    Newsgroups: pl.comp.programming
    Subject: Re: iterowanie po kwadracie
    Date: Mon, 2 Apr 2012 12:51:35 +0000 (UTC)
    Organization: news.chmurka.net
    Lines: 40
    Message-ID: <p...@n...chmurka.net>
    References: <jl4tcg$jo0$1@inews.gazeta.pl> <jl56od$hos$1@inews.gazeta.pl>
    NNTP-Posting-Host: avenger.chmurka.net
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2
    Content-Transfer-Encoding: 8bit
    X-Trace: avenger.news.chmurka.net 1333371095 15140 94.75.119.166 (2 Apr 2012 12:51:35
    GMT)
    X-Complaints-To: usenet#chmurka.net
    NNTP-Posting-Date: Mon, 2 Apr 2012 12:51:35 +0000 (UTC)
    X-Accept-Language: pl, en-us, en
    X-Face: cH9M7E&=}hx;:1xh~O-@_W%(+nYCoNx6[gzClaf{{5#M@%v@D@3#5[=yv>XO\D?39"SsA~%
    :>dyB~`d?;hdxK-'g3?"Mz/4%[j@_MMe8:8B=EUYkc#nqxy<vvbc(@~@|ML,jK%C;z3)gKyR:,QBb3
    9PPzM74c>y{6"X`:)D*<j-,~_L`IYzr)@RG_dn
    X-Composer: nano
    X-User-Uptime: 854847791 seconds
    X-Hackerkey: v4sw7CHPSU$hw8ln4pr8OP$ck4$ma6u7LNS$w2Cm4g/l8D$i5e5t4Xb5en8$aIs0r1
    p0/0g4/5CHO http://www.hackerkey.com/
    User-Agent: tin/1.9.3-20080506 ("Dalintober") (UNIX) (Linux/2.6.38-avenger (i686))
    X-Geek-Code: v3.1 G d- s:++ a- C++++$ UBL++++$ P+ L++++$ !E !W++ N++ o? K--? !w !O M?
    !V PS+++ PE++ Y++ PGP++ !t !5 X+ !R tv-- b- DI D+ G e h r++ y?**
    X-Comment-To: " M.M." <m...@g...pl>
    Xref: news-archive.icm.edu.pl pl.comp.programming:196544
    [ ukryj nagłówki ]

    M.M. <m...@g...pl> wrote:

    > Kolejne punkty leza na prostych, wiec punkt nastepny uzyskuje
    > sie przez dodanie dx i dy do punktu poprzedniego. Ze
    > wzorow na obrot trzeb wyliczyc start_x i start_y a
    > potem odpowiednio dodawac dx i dy.

    Może to kumulować błąd, jeżeli dx i dy są w jakiś sposób przybliżone
    (np. float). Lepiej nie dodawać tylko mnożyć.

    Przykład tego o czym mówię:

    #include <stdio.h>

    int main()
    {
    long i;
    const float factor = 1.11;
    float f = 0;

    for (i = 0; i <= 100000; ++i)
    {
    if (!(i % 1000))
    printf("i=%d i*factor=%.4f f=%.4f diff=%.4f\n", i, i *
    factor, f, f - i * factor);

    f += factor;
    }

    return 0;
    }

    Ostatnia linijka outputu:

    i=100000 i*factor=111000.0014 f=110948.9922 diff=-51.0092

    Kalkulator mówi, że 100000 * 1.11 to 111000 i mniej więcej tyle wyszło
    z mnożenia, a z dodawania 0.05% mniej.

    --
    Gof

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: