---
title: "Sin-kurva på x-axeln med BGI"
type: "forum-thread"
url: "https://www.webforum.nu/amne/c-cpp/28021-sin-kurva-på-x-axeln-med-bgi"
topic: "C/C++"
topic_url: "https://www.webforum.nu/amne/c-cpp"
author: "PeW"
published: "2001-02-15T21:49:00.000Z"
updated: "2001-02-18T16:17:00.000Z"
replies: 13
views: 576
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/c-cpp/28021-sin-kurva-på-x-axeln-med-bgi"
---

# Sin-kurva på x-axeln med BGI

## #1 — PeW, 2001-02-15T21:49Z

Några tips om hur plotta ut pixlar i en sinkurva på x-axeln, +/- 15px på y och ca 25 px mellan maxpunkterna. Helst ingen trög loop utan mera pang på röbetan... eftersom den är tänkt att hamna i en nästlad for-slinga från början. Det är DOS och Borlands BGI som gäller.. vers BC5.02.

Tack på förhand!

Permalänk: https://www.webforum.nu/p/28021

## #2 — D3VaST8D, 2001-02-16T07:24Z

Mig veterligen måste du använda en loop.
Fast om du är smart kan du ju använda dig av symmetrin hos en sinuskurva och genom spegling och transformering minska antalet operationer.
På så sätt behöver du bara "räkna ut" 1/4. :p

Permalänk: https://www.webforum.nu/p/400941

## #3 — PhOrPhEr, 2001-02-16T18:12Z

En loop måste du använda för att rita ut kurvan.

Och jag är tveksam när det gäller speglingar och transformationer. Dessa funktioner är förmodligen mer krävande än en vanlig "rita-sinuskurva-funktion" och då tjänar du inget på det.

Permalänk: https://www.webforum.nu/p/400942

## #4 — D3VaST8D, 2001-02-16T18:49Z

PhOrPhEr: naturligvis är det mer krävande... att koda (inte svårt dock). Ur effektivitets synvinkel är det bra mycket snabbare än att rita ut hela sinuskurvan. Snabba funktioner gillar vi! :p

Permalänk: https://www.webforum.nu/p/400943

## #5 — PeW, 2001-02-16T21:05Z

OK.. lite förslag i kod?

Permalänk: https://www.webforum.nu/p/400944

## #6 — D3VaST8D, 2001-02-16T22:21Z

Har du börjat med koden själv eller står du på ruta 1?

lite pseudo-kod då jag inte vet hur dina ritfunktioner ser ut (plotPixel finns i GLUT - du får anv motsv).
plotPixel(x, y, r, g, b) - röd, grön, blå - anger färgen på pixeln.

\<font size="1" face="Verdana, Arial, Helvetica, sans-serif"\>Kod:\<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600"\>
for(x_position=0; i\<=pi/2;intervallökning av x_position)
{
   y_position = sin(x_position);
   plotPixel(x_position, y_position, r, g, b);
   plotPixel(pi-x_position, y_position, r, g, b);
   plotPixel(-x_position, -y_position, r, g, b);
   plotPixel(-pi+x_position, -y_position, r, g, b);
}

Detta bör skapa en sinuskurva y=sinx i intervallet -pi till pi (radianer används).
Varje varv plottar ut 4 punkter genom att utnyttja symmetrin. På detta sätt behöver du bara räkna ut y för 0 \< x \< pi/2, dvs en 4:e del av kurvan.
bra va :)

\[Redigerat av D3VaST8D den 16 feb 2001\]

Permalänk: https://www.webforum.nu/p/400945

## #7 — PeW, 2001-02-17T08:03Z

Nej jag står inte i ruta ett. Men jag behövde baka in en sinkurva i programmet. Körde en annan variant med nästlade forloopar som drog ned tempot rejält. Ska testa med koden här.  :)

Permalänk: https://www.webforum.nu/p/400946

## #8 — D3VaST8D, 2001-02-17T09:09Z

OBS! koden förutsätter att du kan skapa ett koordinatsystem.... vill du enbart använda dig av pixelpositioner får du ange en referensepunkt. Utifrån denna får du räkna ut absolutbeloppet och addera/subtrahera istället för att köra med x, -x, y, -y.

Anledningen till att det går slött är att operationen kör med decimaltal. Det kräver mer av processorn. Ju färre decimaltalsoperationer du utför desto snabbare går det. Kan du komma på en algoritm som "ungefär" ger en sinuskurva men enbart använder sig av heltalsoperationer kan du speeda upp koden ytterligare! :p

\[Redigerat av D3VaST8D den 17 feb 2001\]

Permalänk: https://www.webforum.nu/p/400947

## #9 — PeW, 2001-02-17T14:46Z

D3VaST8D \>\>
Jorå, det börjar likna nåt... grejen är att hela programmet vart lite komplext med itererande funktioner m.m.., så jag ska sätta mig ikväll och snygga till koden lite och kolla igenom heltalsberäkningar kontra decimalt. Förmodligen kan jag styra upp det som du sa. Tack!

Permalänk: https://www.webforum.nu/p/400948

## #10 — D3VaST8D, 2001-02-17T15:34Z

Itererande funktioner??? Är det funktioner med loopar eller rekursiva funktioner (dvs funktioner som anropar sig själva)?

Permalänk: https://www.webforum.nu/p/400949

## #11 — PeW, 2001-02-17T17:27Z

Hallå där Pet-Johan?  ;)

Nej, men funktioner som jag loopat... dvs anropar x-antal ggr istället för att nästla alltför många forsatser och upprepa kod. 
Programmet skulle vara i c-syntax och med BGI så det blir som det blir...  :)

Permalänk: https://www.webforum.nu/p/400950

## #12 — D3VaST8D, 2001-02-17T17:38Z

haha :e
C rockar phett!
Beror på vad man vill åstadkomma, sitter själv och proggar ftp klient+server nu i C. :p

Permalänk: https://www.webforum.nu/p/400951

## #13 — PeW, 2001-02-17T17:42Z

Inge fel på C, egentligen. Men de färdiga funktionerna till Borlands BGI är en aningens tunggrodda... äh, det blir nog bra det här  :)

Permalänk: https://www.webforum.nu/p/400952

## #14 — PeW, 2001-02-18T16:17Z

Nu tickar det på som det skulle  :)
Tack för hjälpen!

Permalänk: https://www.webforum.nu/p/400953

---

Tråden på webben: https://www.webforum.nu/amne/c-cpp/28021-sin-kurva-på-x-axeln-med-bgi
