ЮЬЬЬЬˆˆˆЌЊЊЊЌˆˆˆЌЬЬЬЌЬРЬЌЬРЬЌЬРЬЬЬьюˆˆЬюЊЊРюˆЈРюЬЌРЬРЌРРРЌРРРЌРРЮЬЬЬЬˆˆˆЌЊЊЊЌˆˆˆЌЬЬЬЌЬЬЬЌЬРЬЌЬРЬЬЬьюˆˆЬюЊЊРюˆЈРюЬЌРЬЬЌРРРЌРРРЌРРЌЬЬЬЌЊЊЊЌЊЌЊЌЊЪЬЌЊЊЊŒˆˆˆЬРЬЮЬЬЮЬЌЬЊЊРьЌЊРюЊЊРюЊЊРюˆˆЬюРьюЬЬююЌЬЬЬЌЊЊЊЌЊЌЊЌЊЪЬЌЊЊЊŒˆˆˆЬРЬЮЬЬЮЬЌЬЊЊРьЌЊРюЊЊРюЊЊРюˆˆЬюРьюЬЬюю >Р?ннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннЭЬмЬнннннннЬЬмЬнннЭмнннЭЬЬнннЭмнЬннннннннннннннннннннннннЬмннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннЬнЬЬнЭЬнннЬннннЬЬЭЬмннЭмннЬмЭмнЬннЬмЭнЭннЭнЬнЬмЭмЭЭЬмннЭмЭЭмЭЭЬмнЬЬнЬмЭЬмнннннннннннннннннннннннннннннннннннннннннннннннЬнЬнмЬЭмннЬЬнЬЭЬнЭмЭннЭЬмЭмЭЭмнЬнЭмЭЭЭЭннЭнЬЭмЭЭмЭЭмЭннЭмнЭмЭЭмЭЭЬнЭмЭЭмЭнннннннннннннннннннннннннннннннннннннннннннннннЬнЬнмЬмнннЬннЬнЭЬЭмЭннЭмнЭмЭЭмнЬнЭмЭЭЬЬнннЬЬЭмЭЭмЭЭмнннЭмЭЭмЭЭмннЭЬЭмЭЭмннннннннннннннннннннннннннннннннннннннннннннннннЬнЬнмЭЬнннЬннЬЭЬмЭмЭннЭмннЬмнЬмЭЬнЬмЭмЬннннЬнЬмнЬмЭмннннЬмнЬмЭмнЭЬмнЬмЭмннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннЬмнннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннЭЬмЬннннннннннЬЭмнннннннннЬЭмнннннЬнЭмннЭЬнннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннЬнЬнмЭЬмЬЬнннЬЬмЭЬнЬЬнЭЬннЭмЭЭмЭЭЬЬннннЬнмЬнмЬЬнЭЬмЭЬнЬЬннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннЬнЬЬнмЭмЬнмннЬЬмЬЭмЬнммЭмЬЭЬмЭмЭнЬнЭмннЬннЬнмЬнмЬмнЬнмЬнмнннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннЬнЬнммЭмЬнмннмммЬмнЬнмЬЬмЬЭмЭЭмЭнЬнЭмннЬнмЬнмЬнннЬмЬнмЬннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннЭЬмЬнмЭЬмЬнмннмнмЭЬнЬнмнЭмЬЭмЭнЬмнЭЬЭмннЭЬнЭЬнЬннЬЬнЭЬнЬнннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннЭЬннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннднннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннMдннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннMMднннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннндMдннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннMDнннннннннннннннMнMднннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннндDднннннннннннннMннMннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннMнMDннннннннннннндннDнннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннMнннднннннннннннндннндннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннндннMдMDDDDDDDDDDDDDDDнннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннMDDDDдннннннннннннннMDднннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннDMDнннннннннннннннннннMннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннMнннDDннннннннннннннннннDннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннндннMDDDннннннннннннннннннднннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннDDDDднннDдннннннннннннннннMннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннMDннннннннннннннннднннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннDдннннннннннннннMннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннDднннннннннннннндннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннMднннннннннннннMдннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннMDннннннннннннндннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннDннннннннннннLннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннDDннннннннннЭLнннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннDннDднннннннннLннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннDннннDдннннннннMнннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннDннннннDDдннннннMнннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннMDDDDDDднMDDDнмндннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннDLDнннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннндннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннн№-- title: Fish Simulator -- author: Zyld -- desc: Procedural Animation with trigonometri -- site: Website link -- script: lua t=0 -- Fish class definition Fish = {} Fish.__index = Fish function Fish:new(x, y, segments, color) local fish = setmetatable({}, Fish) fish.p = {} fish.total_segments = segments fish.color = color fish.rotation = 15.6 / segments for i=1,segments do local r_value = 2 * (segments - i) if i == 1 then table.insert(fish.p, {x = x, y = y, angle = 0, srightx = 0, srighty = 0, sleftx = 0, slefty = 0, srightx2 = 0, srighty2 = 0, sleftx2 = 0, slefty2 = 0, eyesx1 = 0, eyesy1 = 0, eyesx2 = 0, eyesy2 = 0, r = (2 * (segments - i)) - 4}) elseif i == segments then table.insert(fish.p, {x = x - ((i-1) * 10), y = y, angle = 0, srightx = 0, srighty = 0, sleftx = 0, slefty = 0, r = 0}) else table.insert(fish.p, {x = x - ((i-1) * 10), y = y, angle = 0, srightx = 0, srighty = 0, sleftx = 0, slefty = 0, r = r_value}) end end return fish end function Fish:update(mx, my) local angle_to_mouse = math.atan2(my - self.p[1].y, mx - self.p[1].x) local rad = math.rad(self.p[1].angle) local m_angle = (angle_to_mouse - rad) % (2 * math.pi) if m_angle > math.pi then m_angle = m_angle - (2 * math.pi) end if m_angle > 0.1 then self.p[1].angle = self.p[1].angle + self.rotation elseif m_angle < 0.1 then self.p[1].angle = self.p[1].angle - self.rotation end for i=1,#self.p do if i < 2 then self:move_head(rad) else self:move_segment(i) end end end function Fish:move_head(rad) local headx = self.p[1].x + (self.p[1].r) * math.cos(rad) local heady = self.p[1].y + (self.p[1].r) * math.sin(rad) circ(self.p[1].eyesx1, self.p[1].eyesy1, 1/6 * self.total_segments, 12) circ(self.p[1].eyesx2, self.p[1].eyesy2, 1/6 * self.total_segments, 12) line(headx, heady, self.p[1].srightx2, self.p[1].srighty2, self.color) line(headx, heady, self.p[1].sleftx2, self.p[1].slefty2, self.color) line(self.p[1].srightx, self.p[1].srighty, self.p[1].srightx2, self.p[1].srighty2, self.color) line(self.p[1].sleftx, self.p[1].slefty, self.p[1].sleftx2, self.p[1].slefty2, self.color) self.p[1].x = self.p[1].x + math.cos(rad) * 1 self.p[1].y = self.p[1].y + math.sin(rad) * 1 self.p[1].srightx = self.p[1].x + (self.p[1].r) * math.cos(rad + math.pi/2) self.p[1].srighty = self.p[1].y + (self.p[1].r) * math.sin(rad + math.pi/2) self.p[1].sleftx = self.p[1].x + (self.p[1].r) * math.cos(rad + math.pi/-2) self.p[1].slefty = self.p[1].y + (self.p[1].r) * math.sin(rad + math.pi/-2) self.p[1].srightx2 = self.p[1].x + (self.p[1].r) * math.cos(rad + math.pi/4) self.p[1].srighty2 = self.p[1].y + (self.p[1].r) * math.sin(rad + math.pi/4) self.p[1].sleftx2 = self.p[1].x + (self.p[1].r) * math.cos(rad + math.pi/-4) self.p[1].slefty2 = self.p[1].y + (self.p[1].r) * math.sin(rad + math.pi/-4) self.p[1].eyesx2 = self.p[1].x + (0.6 * self.total_segments) * math.cos(rad + 1) self.p[1].eyesy2 = self.p[1].y + (0.6 * self.total_segments) * math.sin(rad + 1) self.p[1].eyesx1 = self.p[1].x + (0.6 * self.total_segments) * math.cos(rad - 1) self.p[1].eyesy1 = self.p[1].y + (0.6 * self.total_segments) * math.sin(rad - 1) end function Fish:move_segment(i) local current = self.p[i] local previous = self.p[i-1] local dx = previous.x - current.x local dy = previous.y - current.y local dist = math.sqrt(dx*dx + dy*dy) local angle = math.atan2(dy, dx) current.angle = angle current.srightx = current.x + (current.r) * math.cos(angle + math.pi/2) current.srighty = current.y + (current.r) * math.sin(angle + math.pi/2) current.sleftx = current.x + (current.r) * math.cos(angle + math.pi/-2) current.slefty = current.y + (current.r) * math.sin(angle + math.pi/-2) line(current.srightx, current.srighty, previous.srightx, previous.srighty, self.color) line(current.sleftx, current.slefty, previous.sleftx, previous.slefty, self.color) if i == self.total_segments//2 or i == #self.p then self:draw_wings(current, angle) end if dist > 10 then current.x = previous.x - math.cos(current.angle) * 10 current.y = previous.y - math.sin(current.angle) * 10 end end function Fish:draw_wings(current, angle) local r1 = 1.3 * self.total_segments local r2 = 0.6 * self.total_segments local r3 = 1.15 * self.total_segments if current == self.p[3] then r1 = r1 * 1.25 r2 = r2 * 1.25 r3 = r3 * 1.25 end local l_wing = { {x = current.sleftx, y = current.slefty}, {x = current.sleftx + r1 * math.cos(angle - 0.15), y = current.slefty + r1 * math.sin(angle - 0.15)}, {x = current.sleftx + r2 * math.cos(angle + math.pi/-3), y = current.slefty + r2 * math.sin(angle + math.pi/-3)}, {x = current.sleftx + r3 * math.cos(angle + math.pi/-4*3), y = current.slefty + r3 * math.sin(angle + math.pi/-4*3)} } for i=1,#l_wing do local next_i = (i % #l_wing) + 1 line(l_wing[i].x, l_wing[i].y, l_wing[next_i].x, l_wing[next_i].y, self.color) end local r_wing = { {x = current.srightx, y = current.srighty}, {x = current.srightx + r1 * math.cos(angle + 0.15), y = current.srighty + r1 * math.sin(angle + 0.15)}, {x = current.srightx + r2 * math.cos(angle + math.pi/3), y = current.srighty + r2 * math.sin(angle + math.pi/3)}, {x = current.srightx + r3 * math.cos(angle + math.pi/4*3), y = current.srighty + r3 * math.sin(angle + math.pi/4*3)} } for i=1,#r_wing do local next_i = (i % #r_wing) + 1 line(r_wing[i].x, r_wing[i].y, r_wing[next_i].x, r_wing[next_i].y, self.color) end end -- Initialize two fishes with different sizes and colors fishes={} for i=1,math.random(4,7) do table.insert(fishes,Fish:new(math.random(0,240),math.random(0,136),math.random(5,9),4)) end function TIC() cls(13) local mx, my = mouse() for i=1,#fishes do fishes[i]:update(mx,my) end --fish1:update(mx, my) --fish2:update(mx, my) --fish3:update(mx, my) end