package Ġcom . ham z ash ar uf . floor _ planner . model Ċ Ċ import Ġkotlin . math . max Ċ import Ġkotlin . math . min Ċ Ċ /** Ċ Ġ* ĠLine Ġis Ġdefined Ġby Ġstarting Ġpoint Ġand Ġending Ġpoint Ġon Ġ 2 D Ġdimension .< br ></ br > Ċ Ġ* Ċ Ġ* Ġ@ author ĠH am za ĠSh ar af Ġ< ham z ash ar uf 2 0 @ gmail . com > Ċ Ġ* Ġ@ param Ġstart Ġstart Ġpoint . Ċ Ġ* Ġ@ param Ġend Ġend Ġpoint . Ċ Ġ*/ Ċ class ĠLine ( ĊĠĠĠ Ġval Ġstart : ĠPoint , ĊĠĠĠ Ġval Ġend : ĠPoint Ċ ) Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġy Ġ= Ġ** A ** x Ġ+ ĠB ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġ** A ** ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġa Ġ= ĠDouble . NaN ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġy Ġ= ĠAx Ġ+ Ġ** B ** ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġ** B ** ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġb Ġ= ĠDouble . NaN ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIndic ate Ġwhereas Ġthe Ġline Ġis Ġvertical . Ġ< br ></ br > ĊĠĠĠĠ Ġ* ĠFor Ġexample , Ġline Ġlike Ġx = 1 Ġis Ġvertical , Ġin Ġother Ġwords Ġparallel Ġto Ġaxis ĠY . Ġ< br ></ br > ĊĠĠĠĠ Ġ* ĠIn Ġthis Ġcase Ġthe ĠA Ġis Ġ(+ /- ) infinite . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġ` True ` Ġif Ġthe Ġline Ġis Ġvertical , Ġotherwise Ġreturn Ġ` False ` ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġis Vertical Ġ= Ġfalse ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIndic ate Ġwhereas Ġthe Ġpoint Ġl ays Ġon Ġthe Ġline . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġpoint Ġ- ĠThe Ġpoint Ġto Ġcheck ĊĠĠĠĠ Ġ* Ġ@ return Ġ` True ` Ġif Ġthe Ġpoint Ġl ays Ġon Ġthe Ġline , Ġotherwise Ġreturn Ġ` False ` ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis Inside ( point : ĠPoint ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmax X Ġ= Ġmax ( start . x , Ġend . x ) ĊĠĠĠĠĠĠĠ Ġval Ġmin X Ġ= Ġmin ( start . x , Ġend . x ) ĊĠĠĠĠĠĠĠ Ġval Ġmax Y Ġ= Ġmax ( start . y , Ġend . y ) ĊĠĠĠĠĠĠĠ Ġval Ġmin Y Ġ= Ġmin ( start . y , Ġend . y ) ĊĠĠĠĠĠĠĠ Ġreturn Ġpoint . x Ġin Ġmin X .. max X Ġ&& Ġpoint . y Ġ>= Ġmin Y Ġ&& Ġpoint . y Ġ<= Ġmax Y ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠString . format ("% s -% s ", Ġstart . toString (), Ġend . toString ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( end . x Ġ- Ġstart . x Ġ!= Ġ 0 . 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġa Ġ= Ġ( end . y Ġ- Ġstart . y ) Ġ/ Ġ( end . x Ġ- Ġstart . x ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb Ġ= Ġstart . y Ġ- Ġa Ġ* Ġstart . x ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Vertical Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }