Oven Lamp

Point in Screen (Beam Source to Screen) {PxQ,PyQ}

Interception Screen

{LnxQ, LnyQ} = {x, y}/.Solve[{(-LnAx + x)/(-LnAx + LnBx) == (-LnAy + y)/(-LnAy + LnBy), (-Sx + x)/Cos[Q] == (-Sy + y)/Sin[Q]}, {x, y}][[1]]//Simplify//InputForm

PLCQ = Min[L1DQ, L2DQ, ..., LnDQ, ..., Big] ;

PLxQ = Switch[PLCQ, Big, Sx, L1DQ, L1xQ, L2DQ, L2xQ, ..., LnDQ, LnxQ, ...] ;

PLyQ = Switch[PLCQ, Big, Sy, L1DQ, L1yQ, L2DQ, L2yQ, ..., LnDQ, LnyQ, ...] ;

Reflection Screen

{RnxQ, RnyQ} = {x, y}/.Solve[{(-RnAx + x)/(-RnAx + RnBx) == (-RnAy + y)/(-RnAy + RnBy), (-Sx + x)/Cos[Q] == (-Sy + y)/Sin[Q]}, {x, y}][[1]]//Simplify//InputForm

PRCQ = Min[R1DQ, R2DQ, ..., RnDQ, ..., Big] ;

PRxQ = If[PLCQ<PRCQ, Sx, Switch[PRCQ, Big, Sx, R1DQ, R1xQ, R2DQ, R2xQ, ..., RnDQ, RnxQ, ...]] ;

PRyQ = If[PLCQ<PRCQ, Sy, Switch[PRCQ, Big, Sy, R1DQ, R1yQ, R2DQ, R2yQ, ..., RnDQ, RnyQ, ...]] ;

RAxQ = If[PLCQ<PRCQ, Sx, Switch[PCQ, Big, Sx, R1DQ, R1Ax, R2DQ, R2Ax, ..., RnDQ, RnAx, ...]] ;

RAyQ = If[PLCQ<PRCQ, Sy, Switch[PCQ, Big, Sy, R1DQ, R1Ay, R2DQ, R2Ay, ..., RnDQ, RnAy, ...]] ;

RBxQ = If[PLCQ<PRCQ, Sx, Switch[PCQ, Big, Sx, R1DQ, R1Bx, R2DQ, R2Bx, ..., RnDQ, RnBx, ...]] ;

RByQ = If[PLCQ<PRCQ, Sy, Switch[PCQ, Big, Sy, R1DQ, R1By, R2DQ, R2By, ..., RnDQ, RnBy, ...]] ;

Reflection Point {PxQ,PyQ}

{Sx, Sy}, {PRxQ, PRyQ}, {InxQ, InyQ}

Reflection Screen

{RAxQ, RAyQ}, {RBxQ, RByQ}

TE : (x - PRxQ)/(RAxQ - RBxQ) == (y - PRyQ)/(RAyQ - RByQ)

NE : (x - PRxQ)/(RAyQ - RByQ) == -((y - PRyQ)/(RAxQ - RBxQ))

x/.Solve[(x - PRxQ)/(RAyQ - RByQ) == -((-PRyQ)/(RAxQ - RBxQ)), x][[1]]//InputForm

(PRxQ * RAxQ + PRyQ * RAyQ - PRxQ * RBxQ - PRyQ * RByQ)/(RAxQ - RBxQ)

{NnxQ, NnyQ} = {(PRxQ * RAxQ + PRyQ * RAyQ - PRxQ * RBxQ - PRyQ * RByQ)/(RAxQ - RBxQ), 0}

{a0, b0} = {Sx - PRxQ, Sy - PRyQ} ;

{a1, b1} = {NnxQ - PRxQ, NnyQ - PRyQ} ;

{a2, b2} = {InxQ - PRxQ, InyQ - PRyQ} ;

γ = 2β - α = 2ArcTan[a1, b1] - ArcTan[a0, b0] = ArcTan[a2, b2] ;

2ArcTan[RAyQ - RByQ, RBxQ - RAxQ] - ArcTan[Sx - PRxQ, Sy - PRyQ]

Reflection Equation

y == Tan[2ArcTan[RAyQ - RByQ, RBxQ - RAxQ] - ArcTan[Sx - PRxQ, Sy - PRyQ]] (x - PRxQ) + PRyQ

Point in Screen (Reflection Beam to Screen) {YxQ,YyQ}

YT = Tan[2ArcTan[RAyQ - RByQ, RBxQ - RAxQ] - ArcTan[Sx - PRxQ, Sy - PRyQ]] ;

{YmxQ, YmyQ} = {x, y}/.Solve[{(x - LmAx)/(LmAx - LmBx) == (y - LmAy)/(LmAy - LmBy), y == YT (x - PRxQ) + PRyQ}, {x, y}][[1]]//Simplify//InputForm

YmDQ = If[Min[LmAx, LmBx] ≤YmxQ≤Max[LmAx, LmBx] &&Min[LmAy, LmBy] ≤YmyQ≤Max[LmAy, LmBy], Sqrt[(YmxQ - PxQ)^2 + (YmyQ - PyQ)^2], Big] ;

YCQ = Min[Y1DQ, Y2DQ, ..., YmDQ, ..., Big] ;

YxQ = Switch[YCQ, Big, PxQ, Y1DQ, Y1xQ, Y2DQ, Y2xQ, ..., YmDQ, YmxQ, ...] ;

YyQ = Switch[YCQ, Big, PyQ, Y1DQ, Y1yQ, Y2DQ, Y2yQ, ..., YmDQ, YmyQ, ...] ;

Area

Det[({{RAxQ, RAyQ, 1}, {RBxQ, RByQ, 1}, {Sx, Sy, 1}})] * Det[({{RAxQ, RAyQ, 1}, {RBxQ, RByQ, 1}, {YmxQ, YmyQ, 1}})]//FullSimplify//InputForm (* >0 *)

(RAyQ * (RBxQ - Sx) + RByQ * Sx - RBxQ * Sy + RAxQ * (-RByQ + Sy)) * (RAyQ * (RBxQ - YmxQ) + RByQ * YmxQ - RBxQ * YmyQ + RAxQ * (-RByQ + YmyQ))