package com.example.usb.map; import android.graphics.Color; import android.graphics.Canvas; import android.graphics.Paint; import android.view.SurfaceView; <<<<<<< HEAD import com.example.usb.About; ======= import com.example.usb.Drawer; >>>>>>> 45fa345199d0c35abadd9326d1efd2607f97e25f import com.example.usb.map.graphelems.Node; import java.util.ArrayList; public class MapDrawer { //changes the thickness of the line int pathThickness = 6; Paint colour = new Paint(); float curRotate; public void place(ArrayList nodes, Canvas canvas, SurfaceView surface){ colour.setColor(Color.RED); for(int currentNode = 0 ; currentNode < nodes.size() - 1; currentNode++){ float[] center = findCenter(nodes.get(currentNode).getXPos(), nodes.get(currentNode).getYPos(), nodes.get(currentNode+1).getXPos(),nodes.get(currentNode+1).getYPos()); curRotate = rotation(nodes.get(currentNode).getXPos(), nodes.get(currentNode).getYPos(), nodes.get(currentNode+1).getXPos(),nodes.get(currentNode+1).getYPos()); canvas.rotate(curRotate, center[0], center[1]); canvas.drawRect(center[0]-(pathThickness/2),center[1]-(center[2]/2),center[0]+(pathThickness/2),center[1]+(center[2]/2), colour); canvas.rotate(-curRotate, center[0], center[1]); canvas.drawCircle(nodes.get(currentNode).getXPos(), nodes.get(currentNode).getYPos(),10, new Paint()); canvas.drawCircle(nodes.get(currentNode+1).getXPos(),nodes.get(currentNode+1).getYPos(),10, new Paint()); } } public float rotation(float x1, float y1, float x2, float y2){ float difX = (x1-x2); float difY = (y1-y2); return (float)(180-Math.toDegrees(Math.atan(difX/difY))); } public float[] findCenter(float x1, float y1, float x2, float y2){ float midX; float midY; float length; midX = (x1+x2)/2; midY = (y1+y2)/2; length = (float) Math.sqrt(Math.abs((x1-x2)*(x1-x2))+Math.abs((y1-y2)*(y1-y2))); return new float[]{midX, midY, length}; } }