🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.science
Article #93

Re: Wiskundevraagje: gemiddelde berekenen.

#93
From: ben
Date: Tue, 18 Apr 2000 00:00
73 lines
2988 bytes
In be.comp.os.linux Pros Robaer <pros@village.uunet.be.cut.this.tail> wrote:
 
> Nu zijn die samples probleemloos om te zetten naar graden (0 - 359),
> maar hoe bereken ik hiervan een gemiddelde? Tenslotte is het
> gemiddelde van 30� en 330� niet 180�, maar 0�.
> 
> Afin, hoe leg ik dat aan boord?

Eigenaardige linux-vraag :-)

Quick-and-dirty:

Omdat je het verschil tussen twee hoeken langs twee kanten van de cirkel
kan meten, moet je het kleinste hoekverschil in absolute waarde pakken
en hiervan de helft toevoegen aan de eerste hoek.

gemiddelde = hoek1 + kleinste hoekverschil(hoek2 - hoek1) / 2

kleinste hoekverschil = als |verschil1| < |verschil2|
			    verschil1
			anders verschil2

Aangezien de verschillen in de twee verschillende richtingen wijzen (met
de klok mee of tegen), moeten zij een verschillend teken hebben.
Om van een negatieve hoek een positieve te maken, doe je:

    pos_hoek = 360 + neg_hoek
    
en omgekeerd:

    neg_hoek = pos_hoek - 360

Bv.
-----------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    int hoek1, hoek2, gemiddelde, verschil1, verschil2;
    if (argc < 3) {
        printf("Usage: hoekgemiddelde hoek1 hoek2\n");
        return EXIT_FAILURE;
    }
    hoek1 = atoi(argv[1]);
    hoek2 = atoi(argv[2]);

    verschil1 = hoek2 - hoek1;
    if (verschil1 < 0)
        verschil2 = 360 + verschil1;
    else
        verschil2 = verschil1 - 360;

    if (abs(verschil1) < abs(verschil2))
        gemiddelde = hoek1 + verschil1 / 2;
    else
        gemiddelde = hoek1 + verschil2 / 2;

    gemiddelde %= 360;

    printf("Het gemiddelde van %d en %d is %d\n", 
	   hoek1, hoek2, gemiddelde);
    return EXIT_SUCCESS;
}
------------------------------------------------------------------

Ik heb zo het gevoel dat dit eenvoudiger en beter uitgelegd kan, maar
het principe is juist IMHO.

Groeten,  
-- 
ben . de . rydt at pandora . be ------------------ your comments
http://users.pandora.be/bdr/ ------- inl. IPv6, Linux en Pandora
Technical Details
Message-ID: <C44L4.109645$l35.228059@afrodite.telenet-ops.be>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <0001EE09@malpertuis>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII
X-Google-Thread: 100a19,14c52696de98bc87
X-Google-Attributes: gid100a19,public
X-Google-Thread: f5500,14c52696de98bc87
X-Google-Attributes: gidf5500,public
X-Google-Thread: f7e01,14c52696de98bc87
X-Google-Attributes: gidf7e01,public
From: ben@co.and.co
Subject: Re: Wiskundevraagje: gemiddelde berekenen.
Date: 2000/04/18
Message-ID: <C44L4.109645$l35.228059@afrodite.telenet-ops.be>
X-Deja-AN: 612849301
Content-Transfer-Encoding: 8bit
References: <0001EE09@malpertuis>
Content-Type: text/plain; charset=ISO-8859-1
X-Complaints-To: abuse@pandora.be
X-Trace: afrodite.telenet-ops.be 956091810 195.130.154.193 (Tue, 18 Apr 2000 23:03:30 MET DST)
Organization: soms
MIME-Version: 1.0
NNTP-Posting-Date: Tue, 18 Apr 2000 23:03:30 MET DST
Newsgroups: be.science,nl.wetenschap,be.comp.os.linux