Symulacja diody w delphi

0

Witam.
Mam do utworzenia macierz, która jest odzwierciedleniem intensywności światłą diody , macierz ma być tak zbudowana, że wartość w śrdoku ma wartość najwiekszą a wartości przy brzegach są wartościami najmniejszymi. (nie wiem czy dość zrozumiale to opisałem). Jeśli ktoś by mógł mi pomóc to proszę o podpowiedź.
Dioda jest tak jaby cosinusoida.

0
Tablica :array[1..20] of byte;

for i := 1 to 10 do Tablica[i] := i;
for i := 11 downto 1 do Tablica[i] := i;
0

Tak a jak przejść z wymiaru 3D do 2D, bo tak mi sie wydaje ze trzeba to zamienic na jakas funkcje [???]

0

A po co 3D na 2D, bo z postu nic takiego nie wynikało ?

0

mozna udawac za pomoca funkcji Gaussa

http://mathworld.wolfram.com/GaussianFunction.html

ale jak sie chce przestrzennie to nalezy pamietac, ze led ma strukture warstwowa (oczywiscie jak sie doda lusterko - ten maly kubeczek - to sie swiatlo rozprasze, soczewka, itp.)

tu przyklad dla lasera HeNe
user image
oraz dla diody laserowej
user image

0

Bo cały prohgram mma być symulacją świecenia diody, a dioda ma kształt półkola ( dokładnie rzecz biorąc jest taką cosinusoidą przestrzenna) i teraz by trzba bylo te wartości przenisc na podstawe diody ( nie wiem jak to inaczej wytłumaczyć cięzko bez rysunku)

0

Bo cały program mma być symulacją świecenia diody, a dioda ma kształt półkola ( dokładnie rzecz biorąc jest taką cosinusoidą przestrzenna) i teraz by trzba bylo te wartości przenisc na podstawe diody ( nie wiem jak to inaczej wytłumaczyć cięzko bez rysunku)

0

A pomoże Ci program, który rysuje kulę (lub półkulę), bo mam napisany w pascalu. Zobaczysz jak oblicza się współżedne w macierzy [x,y,z].

CONST
 fi     = 18; { dlugosc geograficzna   }
 lambda = 18; { szerokosc geograficzna }

 Pf = (360 DIV fi) - 1;      { liczba okregow do zbudowania kuli   }
 Pl = (360 DIV lambda) - 1;  { liczba punktow do zbudowania okregu }

VAR
 i, j, k :Integer;           { liczniki petli                      }

TYPE
 TPoint = RECORD X, Y, Z :Real; END;        { rekord na wspolzedne    }

 TKula = ARRAY [0..Pf, 0..Pl] OF TPoint;    { tablica z punktami kuli }
 FOR i := 0 TO Pf DO
  FOR j := 0 TO Pl DO
   BEGIN
    Kula[i,j].X := CosX(j*lambda) * (Rad*CosX(i*fi));
    Kula[i,j].Y := SinX(j*lambda) * (Rad*CosX(i*fi));
    Kula[i,j].Z := SinX(i*fi) * Rad;
   END;

0

Ok. Dzięki ale na razie jeszcze nie wiem jak to zrobić, może trzeba się przespać z tym wszystkim

1 użytkowników online, w tym zalogowanych: 0, gości: 1