Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2015, 15:25   #1
vickfrankie
Новичок
Джуниор
 
Регистрация: 13.12.2015
Сообщений: 1
Восклицание Как изменть данный код под кардиоиду? WPF C#

Имея данный код полярной розы, хотелось бы изменить его под кардиоиду. Я в математике не очень. Но очень хотелось бы получить помощь. Главное написано в DataFill и в PolarFun.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Globalization;

namespace WpfApplication1
{
/// <summary>
/// Логика взаимодействия для MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
const int countDot = 1000;
Point[] points = new Point[countDot+1];
DrawingGroup drawingGroup = new DrawingGroup();

public MainWindow()
{
InitializeComponent();
DataFill();//Заполнение списка данными
Execute();//Заполнение слоев
//Отображение на экране
image.Source = new DrawingImage(drawingGroup);
}

//Генерация точек графиков
void DataFill()
{

for (int i = 0; i < points.Length; i++)
{

double angle = 2 * Math.PI / countDot * i;
points[i].X = Math.Sin(87 * angle) * Math.Cos(angle) / 2;
points[i].Y = Math.Sin(87 * angle) * Math.Sin(angle) / 2;

}

}
private void BackgroundFun()
{
//Создаем объект для описания геометрической фигуры
GeometryDrawing geometryDrawing = new GeometryDrawing();
//Описываем и сохраняем геометрию квадрата
RectangleGeometry rectGeometry = new RectangleGeometry();
rectGeometry.Rect = new Rect(-1, 0, 2, 1);
geometryDrawing.Geometry = rectGeometry;
//Настраиваем перо и кисть
geometryDrawing.Pen = new Pen(Brushes.Red, 0.005);// Перо рамки
geometryDrawing.Brush = Brushes.Beige;//Кисть закраски
//Добавляем готовый слой в контейнер отображения
drawingGroup.Children.Add(geometryD rawing);
}
private void GridFun()
{
GeometryGroup geometryGroup = new GeometryGroup();
for (int i = 1; i < 10; i++)
{
LineGeometry line = new LineGeometry(new Point(1.0, i * 0.1),
new Point(-0.1, i * 0.1));
geometryGroup.Children.Add(line);
LineGeometry line1 = new LineGeometry(new Point(0, i * 0.1),
new Point(-1.1, 0.1 * i));
geometryGroup.Children.Add(line1);
}

GeometryDrawing geometryDrawing = new GeometryDrawing();
geometryDrawing.Geometry = geometryGroup;

geometryDrawing.Pen = new Pen(Brushes.Gray, 0.003);
double[] dashes = { 1, 1, 1, 1, 1 };
geometryDrawing.Pen.DashStyle = new DashStyle(dashes, -.1);

geometryDrawing.Brush = Brushes.Beige;

drawingGroup.Children.Add(geometryD rawing);
}

private void PolarFun()
{
GeometryGroup geometryGroup = new GeometryGroup();
for (int i = 0; i < points.Length - 1; i++)
{
LineGeometry line = new LineGeometry(new Point(points[i].X, 0.5 - points[i].Y),
new Point(points[i + 1].X, 0.5 - points[i + 1].Y));
LineGeometry line1 = new LineGeometry(points[i], points[i + 1]);
geometryGroup.Children.Add(line);

}
GeometryDrawing geometryDrawing = new GeometryDrawing();
geometryDrawing.Geometry = geometryGroup;

geometryDrawing.Pen = new Pen(Brushes.Blue, 0.005);

drawingGroup.Children.Add(geometryD rawing);
}
private void MarkerFun()
{
GeometryGroup geometryGroup = new GeometryGroup();
for (int i = 0; i <= 10; i++)
{
FormattedText formattedText = new FormattedText(
String.Format("{0,7:F}", 1 - i * 0.2),
CultureInfo.InvariantCulture,
FlowDirection.LeftToRight,
new Typeface("Verdana"),
0.05,
Brushes.Black);

formattedText.SetFontWeight(FontWei ghts.Bold);

Geometry geometry = formattedText.BuildGeometry(new Point(-1.2, i * 0.1 - 0.03));
geometryGroup.Children.Add(geometry );
/*FormattedText formattedText1 = new FormattedText(String.Format("{0,7:F }", 1 - i * 0.2),
CultureInfo.InvariantCulture, FlowDirection.LeftToRight, new Typeface("Verdana"), 0.05, Brushes.Black);
formattedText.SetFontWeight(FontWei ghts.Bold);
Geometry geometry1 = formattedText.BuildGeometry(new Point(1.2, -i * 0.1 - 0.03));
geometryGroup.Children.Add(geometry 1);*/

}
GeometryDrawing geometryDrawing = new GeometryDrawing();
geometryDrawing.Geometry = geometryGroup;

geometryDrawing.Brush = Brushes.LightGray;
geometryDrawing.Pen = new Pen(Brushes.Gray, 0.003);
drawingGroup.Children.Add(geometryD rawing);

}
void Execute()
{
BackgroundFun();
GridFun();
PolarFun();
MarkerFun();
}
}
}
vickfrankie вне форума Ответить с цитированием
Старый 13.12.2015, 22:19   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Во-первых код нужно выделять тегами . В редакторе есть для этого соответствующая кнопка.
КнопкаКод.PNG
Я не говорю уже про форматирование.
Не обижайтесь, но в том виде в котором код представлен на данный момент его прочитать почти не возможно.
По теме.
Цитата:
Сообщение от vickfrankie Посмотреть сообщение
Имея данный код полярной розы, хотелось бы изменить его под кардиоиду. Я в математике не очень. Но очень хотелось бы получить помощь.
Просто, по всей вероятности, этот код не Ваш и Вы даже не пытались в нём разобраться.
Были какие-то попытки самостоятельно переписать построение графика?
Streletz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как понять данный код? SkyWay Microsoft Office Excel 1 12.02.2015 02:36
Как записать в виде функции данный код программы в С++ Muaitai Помощь студентам 0 07.01.2012 01:48
Как записать в виде функции данный код программы в С++ Muaitai Visual C++ 2 06.01.2012 13:42
как правильно разбить данный код на 3 класса? neomax38 Общие вопросы по Java, Java SE, Kotlin 1 25.11.2011 22:17
как отсортировать массив под данный отрезок и как минимум и максимум из него найти SIEGER Паскаль, Turbo Pascal, PascalABC.NET 1 20.11.2008 08:58