Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Муратов
1 / 1 / 0
Регистрация: 17.08.2012
Сообщений: 62
#1

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

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

здравствуйте! Есть вопрос, окружность радиус которого является getEvent палец, вокруг пальца отрисовывается круг, через палец он также получает getEvent для (y1 и y2 для sin альфа), а также (x1 и x2 для cos альфа).
Нужно получить Угол tg = (sin альфа/cos альфа). И как от рисовать круг через Convas.drawCircle чтобы получилось вот такой рисунок
Окружность радиус которого является getEvent палец

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.11.2013, 23:50
Ответы с готовыми решениями:

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

PLAY при касании экрана и STOP когда палец убран
Вот код . . . @Override public boolean onTouchEvent(MotionEvent...

Как сделать кнопку которая выполняет что либо когда она только нажата а убираешь палец нет
Мне нужно сделать пульт для управления. Сейчас сделал так кликнул на кнопку...

Изобразить на экране окружность и ее радиус; при нажатии на клавишу «Enter» радиус должен вращаться по часово
Изобразить на экране окружность и ее радиус; при нажатии на клавишу «Enter»...

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

5
Муратов
1 / 1 / 0
Регистрация: 17.08.2012
Сообщений: 62
10.12.2013, 15:02  [ТС] #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;
}

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

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