Added orientation pointer to PolarView.kt, changed drawn satellite icon

This commit is contained in:
Arty Bishop committed 2021-04-25 10:19:43 +01:00
1 parent 3c29dafd51
commit fe69e90749
2 files changed
+40 -6

No files matched your search

@@ -18,10 +18,7 @@
package com.rtbishop.look4sat.presentation.polarScreen
import android.content.Context
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.Paint
import android.graphics.Path
import android.graphics.*
import android.view.View
import androidx.core.content.ContextCompat
import com.rtbishop.look4sat.R
@@ -66,6 +63,20 @@ class PolarView(context: Context) : View(context) {
color = ContextCompat.getColor(context, R.color.themeLight)
style = Paint.Style.FILL
}
private val satBmp = ContextCompat.getDrawable(context, R.drawable.ic_sat_polar)?.let { sat ->
Bitmap.createBitmap(sat.intrinsicWidth, sat.intrinsicHeight, Bitmap.Config.ARGB_8888).also {
val canvas = Canvas(it)
sat.setBounds(0, 0, canvas.width, canvas.height)
sat.draw(canvas)
return@let it
}
}
private val orientPaint = Paint().apply {
isAntiAlias = true
color = Color.RED
style = Paint.Style.STROKE
strokeWidth = scale * 2f
}
fun setPass(satPass: SatPass) {
this.satPass = satPass
@@ -86,6 +97,7 @@ class PolarView(context: Context) : View(context) {
drawRadarText(canvas)
if (!satPass.isDeepSpace) canvas.drawPath(satTrack, trackPaint)
drawSatellite(canvas, satPass)
drawOrientation(canvas, azimuth, pitch)
}
private fun createPassTrajectory(satPass: SatPass) {
@@ -121,13 +133,24 @@ class PolarView(context: Context) : View(context) {
private fun drawSatellite(canvas: Canvas, satPass: SatPass) {
val satPos = satPass.predictor.getSatPos(Date())
if (satPos.elevation > 0) {
if (satPos.elevation > 0 && satBmp != null) {
val satX = sph2CartX(satPos.azimuth, satPos.elevation, radius.toDouble())
val satY = sph2CartY(satPos.azimuth, satPos.elevation, radius.toDouble())
canvas.drawCircle(satX, -satY, txtSize / 2.4f, satPaint)
canvas.drawBitmap(satBmp, satX - satBmp.width / 2, -satY - satBmp.height / 2, satPaint)
}
}
private fun drawOrientation(canvas: Canvas, azimuth: Float, pitch: Float) {
val azimuthRad = Math.toRadians(azimuth.toDouble())
val tmpElevation = Math.toRadians(pitch.toDouble())
val elevationRad = if (tmpElevation > 0.0) 0.0 else tmpElevation
val orientX = sph2CartX(azimuthRad, -elevationRad, radius.toDouble())
val orientY = sph2CartY(azimuthRad, -elevationRad, radius.toDouble())
canvas.drawLine(orientX - txtSize, -orientY, orientX + txtSize, -orientY, orientPaint)
canvas.drawLine(orientX, -orientY - txtSize, orientX, -orientY + txtSize, orientPaint)
canvas.drawCircle(orientX, -orientY, txtSize / 2, orientPaint)
}
private fun sph2CartX(azimuth: Double, elevation: Double, r: Double): Float {
val radius = r * (piDiv2 - elevation) / piDiv2
return (radius * cos(piDiv2 - azimuth)).toFloat()
@@ -0,0 +1,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:width="32dp"
android:height="32dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#ffe082"
android:pathData="m19.3615,23.9993a0.6076,0.6077 90,0 0,0.3608 -0.1804l4.1021,-4.1012a0.6076,0.6077 90,0 0,-0 -0.8544l-5.6404,-5.6486a0.6076,0.6077 90,0 0,-0.3893 -0.1709l-1.6807,-0.1329 1.2249,-1.2246a0.6076,0.6077 90,0 0,-0 -0.8544l-4.159,-4.1676a0.6076,0.6077 90,0 0,-0.8641 -0l-1.2249,1.2246 -0.133,-1.6803a0.6076,0.6077 90,0 0,-0.1709 -0.3892l-5.6499,-5.6391a0.6076,0.6077 90,0 0,-0.8641 -0l-4.0926,4.0917a0.6076,0.6077 90,0 0,-0 0.8639l5.6404,5.6486a0.6076,0.6077 90,0 0,0.3893 0.1709l1.6807,0.1329 -1.2249,1.2247a0.6076,0.6077 90,0 0,-0 0.8639l4.1591,4.1581a0.6076,0.6077 90,0 0,0.8641 -0l1.2249,-1.2247 0.1329,1.6803a0.6076,0.6077 90,0 0,0.171 0.3892l5.6499,5.6391a0.6076,0.6077 90,0 0,0.4368 0.1804,0.6076 0.6077,90 0,0 0.057,-0zM19.295,22.5373 L14.2338,17.4774 14.0629,15.2084 15.2119,14.0597 17.4813,14.2401 22.5425,19.2906zM8.7928,9.9395 L6.5234,9.7592 1.4622,4.7087 4.7098,1.4619 9.7614,6.5219 9.9418,8.7909z"
tools:ignore="VectorPath" />
</vector>