Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Муратов
1 / 1 / 0
Регистрация: 17.08.2012
Сообщений: 62
#1

Окружность радиус которого является getEvent палец - Программирование Android

30.11.2013, 23:50. Просмотров 489. Ответов 5
Метки нет (Все метки)

здравствуйте! Есть вопрос, окружность радиус которого является getEvent палец, вокруг пальца отрисовывается круг, через палец он также получает getEvent для (y1 и y2 для sin альфа), а также (x1 и x2 для cos альфа).
Нужно получить Угол tg = (sin альфа/cos альфа). И как от рисовать круг через Convas.drawCircle чтобы получилось вот такой рисунок Окружность радиус которого является getEvent палец
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2013, 23:50     Окружность радиус которого является getEvent палец
Посмотрите здесь:

OnTouchListener и толстый дрожащий палец :) - Программирование Android
суть проблемы... жму в экран, двигаю, отпускаю, получаю события ACTION_DOWN, ACTION_UP, ACTION_MOVE... при длительном нажатии желаю...

PLAY при касании экрана и STOP когда палец убран - Программирование Android
Вот код . . . @Override public boolean onTouchEvent(MotionEvent event) { mpAudio = MediaPlayer.create(this,...

Пусть элементами равносторонего треугольника является 1)Сторона а 2)плошядь S 3)высота H 4)радиус вписанной окружности r 5)радиус описсаной окружност - Delphi
Пусть элементами равносторонего треугольника является 1)Сторона а 2)плошядь S 3)высота H 4)радиус вписанной окружности r ...

Массив: Поменять местами столбец, произведение элементов которого является наименьшим, со столбцом, сумма элементов которого является наибольшей - Turbo Pascal
Дана матрица вещественных чисел. Поменять местами столбец, произведение элементов которого является наименьшим, со столбцом, сумма...

Поменять местами столбец, произведение элементов которого является наименьшим, со столбцом, сумма элементов которого является наибольшей - Turbo Pascal
Дана матрица вещественных чисел. Поменять местами столбец, произведение элементов которого является наименьшим, со столбцом, сумма...

Найти площадь кольца, внутренний радиус которого равен R1, а внешний радиус равен R2 - Turbo Pascal
Найти площадь кольца внутренний радиус которого равен R1 а внешний радиус равен R2(R1<R2). В качестве значения Pi использовать 3.14 ...

Найти площадь кольца, внутренний радиус которого равен R. А внешний радиус равен R2 - Turbo Pascal
Найти площадь кольца, внутренний радиус которого равен R. А внешний радиус равен R2 (R1<R2). В качестве значения Pi использовать 3.14

Найти площадь кольца, внутренний радиус которого равен R1, а внешний радиус равен R2 - C++
3 Найти площадь кольца, внутренний радиус которого равен R1, а внешний радиус равен R2 (R1 меньше R2). В качестве значения Pi использовать...

Найти площадь кольца, внутренний радиус которого равен R1, а внешний радиус равен R2 - Turbo Pascal
Найти площадь кольца, внутренний радиус которого равен R1, а внешний радиус равен R2 (R1 < R2) Решить в паскале) Плиз решите пожалуйста,...

Найти площадь кольца, внутренний радиус которого равен R1, а внешний радиус равен R2 (R1 <R2) - C++
Найти площадь кольца, внутренний радиус которого равен R1, а внешний радиус равен R2 (R1 &lt;R2). #include &lt;iostream&gt; #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Муратов
1 / 1 / 0
Регистрация: 17.08.2012
Сообщений: 62
10.12.2013, 15:02  [ТС]     Окружность радиус которого является getEvent палец #2
получилось выложу код может кому нибудь пригодится, по нажатию по экрану появляется круг и в этом круге отрисовывается ещё один круг, идея была чтобы маленький круг не выходил за пределы большого круга, для этого нужно было уравнение окружности и высчитывание синуса угла и косинуса угла.
public class SingleTouchView extends View {



final int MIN_WIDTH = 75;
final int MIN_HEIGHT = 75;
final int DEFAULT_COLOR = Color.WHITE;
int _color;
final int STROKE_WIDTH = 2;

private Paint paint = new Paint();
public float x, y, x1, y1, k, b, Rad, d, EF, A, B, angle, angle1, number = 25, x2, y2, x3, y3, A1, B1, R1, cosalfa, RcosAlfa;
private boolean touching = false;
public boolean ViewFinal = false;
public boolean Final = false;
private float Radius = 100;
private float RadiusMin = 30;
public Drawable image;

public SingleTouchView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
// TODO Auto-generated constructor stub
init();
}

public SingleTouchView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
init();
}

public SingleTouchView(Context context) {
super(context);
// TODO Auto-generated constructor stub
init();
}

private void init() {
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(2);
paint.setColor(Color.DKGRAY);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// TODO Auto-generated method stub
setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec),
MeasureSpec.getSize(heightMeasureSpec));
}

@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);

if (touching) {
//paint.setStrokeWidth(STROKE_WIDTH);
//paint.setColor(_color);
//paint.setStyle(Paint.Style.FILL);
//paint.setMaskFilter(new BlurMaskFilter(5, Blur.OUTER));

Bitmap myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.unl2);
//Bitmap myBitmap1 = BitmapFactory.decodeResource(getResources(), R.drawable.unl1);
Bitmap myBitmap1 = BitmapFactory.decodeResource(getResources(), R.drawable.unl1);
canvas.drawBitmap(myBitmap, x3 - 25, y3 - 35, paint);

if(ViewFinal){
canvas.drawBitmap(myBitmap1, x2 - 25, y2 - 35, paint);
} else{
canvas.drawBitmap(myBitmap, x2 - 25, y2 - 35, paint);
}

canvas.drawCircle(x, y, RadiusMin, paint);

canvas.drawCircle(x1, y1, Radius, paint);

//canvas.drawCircle(x2, y2, 30f, paint);

//canvas.drawCircle(x3, y3, 30f, paint);
/*canvas.save();
image.draw(canvas);
canvas.restore();*/

}
}

public void setColor(int color) {
_color = color;
}

@Override
public boolean onTouchEvent(MotionEvent motionEvent) {
// TODO Auto-generated method stub

switch (motionEvent.getAction()) {
case MotionEvent.ACTION_MOVE:
x = motionEvent.getX();
y = motionEvent.getY();
k = (y1-y)/(x1-x);
b = (x1*y-x*y1)/(x1-x);
Rad = (float) Math.sqrt(Math.pow((x1-x), 2) + Math.pow((y1 - y), 2));
d = Radius - RadiusMin;
EF = Radius + RadiusMin - d;

if((Math.pow((x1-x), 2) + Math.pow((y1-y), 2)) > Math.pow(Radius, 2)){
//x = k*x1+b;
//y = k*y1+b;

cosalfa = (float) ((float) (x-x1)/ Math.sqrt(Math.pow((y-y1), 2)+ Math.pow((x-x1), 2)));
R1 = (float) (Math.sqrt(Math.pow((y-y1), 2)+ Math.pow((x-x1), 2)));
RcosAlfa = Radius*cosalfa;
if(Rad*(1-cosalfa) > 0 && Rad*(1-cosalfa) < 15){
x = x1+Radius;
y = y1;
ViewFinal = true;
Final = true;

}
else if(Rad*(1-Math.abs(cosalfa)) > 0 && Rad*(1-Math.abs(cosalfa)) < 15){
x = x1-Radius;
y = y1;
} else {
x = Radius * cosalfa + x1;
y = Radius * (y-y1)/R1 + y1;
}





//y = (((y1-y)*(x1-x))/(x1-x)) + y;
//touching = false;
}
break;
case MotionEvent.ACTION_DOWN:
touching = true;
x = motionEvent.getX();
y = motionEvent.getY();
x1 = motionEvent.getX();
y1 = motionEvent.getY();
//for(int i = 0; i < number; i++){
angle = (float) ((float) 0 * (Math.PI*2));
angle1 = (float) ((float) (Math.PI*2) - Math.PI);
A = (float) ((float) Radius * Math.sin(angle));
B = (float) ((float) Radius * Math.cos(angle));
A1 = (float) ((float) Radius * Math.sin(angle1));
B1 = (float) ((float) Radius * Math.cos(angle1));
x2 = x + B;
y2 = y + A;
x3 = x + B1;
y3 = y + A1;

//}
break;
case MotionEvent.ACTION_UP:
touching = false;
ViewFinal = false;
Final = false;

default:
touching = false;
ViewFinal = false;
Final = false;
}
invalidate();
return true;
}

}
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
13.12.2013, 12:41     Окружность радиус которого является getEvent палец #3
Смутно понял задание и слишком большой код для "легкого чтива".
За код конечно спасибо, но можете четче задачу обьяснить?
круг между 2мя пальцами рисуете? один за центр - второй за радиус?
или вокруг одного пальца кружок пытаетесь нарисовать?
Муратов
1 / 1 / 0
Регистрация: 17.08.2012
Сообщений: 62
13.12.2013, 13:38  [ТС]     Окружность радиус которого является getEvent палец #4
2 круга рисуется с одного пальца, палец является своего рода центром, маленький круг с меньшим чтобы он за пределы второго большого круга с большим радиусом не выходил, а оставался в круге даже если палец находится вне круга. например палец вышел за пределы большого круга то маленький круг останется в большом круге только по направлению пальца
Tester64
395 / 356 / 43
Регистрация: 22.05.2013
Сообщений: 2,518
13.12.2013, 13:48     Окружность радиус которого является getEvent палец #5
а-а-а... вариант джостика? Оригинально... Интересный компонент получится... Часто в играх такой используют... Но если честно по первому Вашему сообщению догадаться было не реально! И рисунок тоже не помог.
Муратов
1 / 1 / 0
Регистрация: 17.08.2012
Сообщений: 62
13.12.2013, 14:09  [ТС]     Окружность радиус которого является getEvent палец #6
да вариант джостика! если программируете игры для android или на unity 3d можете использовать
Yandex
Объявления
13.12.2013, 14:09     Окружность радиус которого является getEvent палец
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru