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.
Tablica :array[1..20] of byte;
for i := 1 to 10 do Tablica[i] := i;
for i := 11 downto 1 do Tablica[i] := i;
Tak a jak przejść z wymiaru 3D do 2D, bo tak mi sie wydaje ze trzeba to zamienic na jakas funkcje [???]
A po co 3D na 2D, bo z postu nic takiego nie wynikało ?
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
oraz dla diody laserowej
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)
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)
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;
Ok. Dzięki ale na razie jeszcze nie wiem jak to zrobić, może trzeba się przespać z tym wszystkim