public PixelData GetPixelDataAtRaDec(Vector2d raDec) { double x = Math.Max(0, Math.Min((raDec.X - raMin) / this.scaleX, 511)); double y = Math.Max(0, Math.Min(511 - (raDec.Y - decMin) / this.scaleY, 511)); return this.fastImage.GetFilteredPixel(x, y); }
public string GetPixelDataAtRaDecString(Vector2d raDec) { double x = (raDec.X - raMin) / this.scaleX; double y = (raDec.Y - decMin) / this.scaleY; return string.Format("x={0},y={1}, scaleX={2}, scaleY={3}", x, y, scaleX, scaleY); //return this.fastImage.GetFilteredPixel(x,y); }
public static Vector2d Lerp(Vector2d left, Vector2d right, double interpolater) { if (Math.Abs((double)(left.X - right.X)) > 180) { if (left.X > right.X) { right.X += 360; } else { left.X += 360; } } return new Vector2d(left.X * (1 - interpolater) + right.X * interpolater, left.Y * (1 - interpolater) + right.Y * interpolater); }
public Vector2d PointToRaDec(Vector2d point) // point is between 0 and 1 inclusive { int indexX = (int)(point.X / subDivSize); int indexY = (int)(point.Y / subDivSize); if (indexX > ((int)Math.Pow(2, subDivisions) - 1)) { indexX = ((int)Math.Pow(2, subDivisions) - 1); } if (indexY > ((int)Math.Pow(2, subDivisions) - 1)) { indexY = ((int)Math.Pow(2, subDivisions) - 1); } double xDist = (point.X - ((double)indexX * subDivSize)) / subDivSize; double yDist = (point.Y - ((double)indexY * subDivSize)) / subDivSize; Vector2d interpolatedTop = Vector2d.Lerp(raDecMap[indexX, indexY], raDecMap[indexX + 1, indexY], xDist); Vector2d interpolatedBottom = Vector2d.Lerp(raDecMap[indexX, indexY + 1], raDecMap[indexX + 1, indexY + 1], xDist); Vector2d result = Vector2d.Lerp(interpolatedTop, interpolatedBottom, yDist); return result; }