Материал: Исследование вычислительной эффективности веб-технологий

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

<td width="43%"><input type="text" value="0" name="KoordinY_A" size="20" id="ay"></td>

</tr>

<tr>

<td width="14%">Точка B:</td>

<td width="43%"><input type="text" value="10" name="KoordinX_B" size="20" onchange="changeBX();" id="bx"></td>

<td width="43%"><input type="text" value="10" name="KoordinY_B" size="20" id="by"></td>

</tr>

<tr>

<td width="14%">Точка D:</td>

<td width="43%"><input type="text" value="40" name="KoordinX_D" size="20" id="ex"></td>

<td width="43%"><input type="text" value="0" name="KoordinY_D" size="20" id="ey"></td>

</tr>

<tr></tr>

</table>

<br></br>

<input type="submit" value="Расчитать" name="Okay" width="20%"></td>

<input type="button" value="Очистить" onclick="Reset()" name="Cancel" width="20%" id="Button2">

<input type="button" value="Контрольный пример" onclick="Example()" name="Cancel" width="20%" id="Button3">

<br></br>

<table border="1">

<tr>

<td>Число точек</td>

<td>Число попавших точек</td>

<td>Площадь Монте-Карло</td>

<td>Точная площадь</td>

<td>Относительная погрешность, %</td>

<td>Время вычисления, мс</td>

</tr>

</table>

</div>

</form>

</body>

</html>

Файл MonteKarlo.asp

<%@ LANGUAGE = "JScript" %>

<% Server.ScriptTimeOut =210%>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

<title>Расчет площади методом Монте-Карло</title>

<script>Reset()

{.KoordinX_A.value = "";.KoordinX_B.value = "";.KoordinX_D.value = "";.KoordinY_A.value = "";.KoordinY_B.value = "";.KoordinY_D.value = "";

}Example()

{.KoordinX_A.value = "10";.KoordinX_B.value = "10";.KoordinX_D.value = "40";.KoordinY_A.value = "0";.KoordinY_B.value = "10";.KoordinY_D.value = "0";

}

</script>

<%xa=Request.Form("KoordinX_A");ya=Request.Form("KoordinY_A");xb=Request.Form("KoordinX_B");yb=Request.Form("KoordinY_B");xd=Request.Form("KoordinX_D");yd=Request.Form("KoordinY_D");

Radius = (yb-ya)/2;CentrX = xa;CentrY = ya+Radius;minX = xa - (yb-ya);maxX = xd;minY = ya;maxY = yb;

RectangleSquare = ((maxX-minX)*(maxY-minY));;pointsCount = 0;totalPoints = 0;t;mca;precission = 0;

CircleSquare()

{(Math.PI*Math.pow(Radius,2))/2;

}

TriangleSquare()

{ab = Math.sqrt(Math.pow(xa-xb,2)+Math.pow(ya-yb,2));ad = Math.sqrt(Math.pow(xa-xd,2)+Math.pow(ya-yd,2));bd = Math.sqrt(Math.pow(xd-xb,2)+Math.pow(yd-yb,2));polperim = (ab + ad + bd)/2;

Math.sqrt(polperim*(polperim-ab)*(polperim-ad)*(polperim-bd)) ;

}

PointInTriangle(x, y)

{a = (x - xa) * (xa - yb) - (xa - xb) * (y - ya);b = (x - xb) * (yb - yd) - (xb - xd) * (y - yb);c = (x - xd) * (yd - ya) - (xd - xa) * (y - yd);

((a >= 0 && b >= 0 && c >= 0) || (a <= 0 && b <= 0 && c <= 0));

}PointInCirle(x,y)

{(x < (CentrX))

{((Math.pow(x - CentrX, 2) + Math.pow(y - CentrY, 2)) <= Math.pow(Radius, 2));

}{ return false; }

}

PointInIceCream(x,y)

{(x>CentrX)

{PointInTriangle(x,y);

}

{PointInCirle(x,y);

}

}increment(i) {1000 * Math.pow(10, i);

}

area()

{CircleSquare() + TriangleSquare();

}Calculate(amountPoints) {startTime = new Date;

= 0;(var i = 0; i < amountPoints; i++)

{x = Math.random() * (maxX - minX) + minX;y = Math.random() * (maxY - minY) + minY;(PointInIceCream(x,y))

{++;

}

endTime = new Date;= (endTime.getTime() - startTime.getTime()) / 1000;

= RectangleSquare*(pointsCount/amountPoints);= Math.abs(((mca - area()) / area()) * 100);

}

%>

</head>

<body>

<form action = "MonteKarlo.asp" method = "POST" name = "MonteKarlo">

<div id="container">

<img src = "icecream2.jpg" width="50%" align = "right">

<table border="2" width="49%" height = "25%" bgcolor="Azure" bordercolor="Black">

<tr>

<th colspan="3">Координаты треугольника ABD</th>

</tr>

<tr>

<td width="14%">Точка А:</td>

<td width="43%"><input type="text" value = <%=xa%> name="KoordinX_A" size="20"></td>

<td width="43%"><input type="text" value = <%=ya%> name="KoordinY_A" size="20"></td>

</tr>

<tr>

<td width="14%">Точка B:</td>

<td width="43%"><input type="text" value = <%=xb%> name="KoordinX_B" size="20"></td>

<td width="43%"><input type="text" value = <%=yb%> name="KoordinY_B" size="20"></td>

</tr>

<tr>

<td width="14%">Точка E:</td>

<td width="43%"><input type="text" value = <%=xd%> name="KoordinX_D" size="20"></td>

<td width="43%"><input type="text" value = <%=yd%> name="KoordinY_D" size="20"></td>

</tr>

<tr>

</tr>

</table>

<br></br>

<input type="submit" value="Расчитать" name="Okay" width = "20%"></td>

<input type="button" value="Очистить" onclick="Reset()" name="Cancel" width = "20%"id = "Button2">

<input type="button" value="Контрольный пример" onclick="Example()" name="Cancel" width = "20%"id = "Button3">

<br></br>

<table border = "1">

<tr>

<td>Число точек</td>

<td>Число попавших точек</td>

<td>Площадь Монте-Карло</td>

<td>Точная площадь</td>

<td>Относительная погрешность, %</td>

<td>Время вычисления, мс</td>

</tr>

<%for (var i = 3; i < 8; i++) {= Math.pow(10,i);(totalPoints);

%>

<tr>

<td><%=totalPoints%></td>

<td><%=pointsCount %></td>

<td><%=mca.toFixed(4)%></td>

<td><%=area().toFixed(4)%></td>

<td><%=precission.toFixed(4) %></td>

<td><%=t %></td>

</tr>

<% } %>

</table>

</div>

</form>

</body>

</html>

Файл Point (Файлы веб-приложения на базе WPF/ASMX/C#)

using System;System.Collections.Generic;System.Web;

/// <summary>

/// Сводное описание для Point

/// </summary>class Point

{Point()

{

//

// TODO: добавьте логику конструктора

//

}float x, y;Point(float a, float b) { x = a; y = b; }

float PointX

{

{ return x; }

}float PointY

{

{ return y; }

}

}

Файл IceCream.cs

using System;System.Collections.Generic;System.Web;

/// <summary>

/// Сводное описание для IceCream

/// </summary>

///WSMK

{class IceCream

{abe;ab;abcd;()

{

}IceCream(Point a, Point b, Point e)

{= new Triangle(a, b, e);= new Circle(a, b);= new Rectangle(ab.MinX, abe.MaxX, abe.MinY, abe.MaxY);

}bool PointInIceCream(Point randP)

{(randP.PointX > (ab.CentrPoint.PointX))

{ return abe.PointInLines(randP); }

{ return ab.PointInCircle(randP); }

}

float realSquare() { return (abe.Square() + ab.Square()); }

float minX

{

{ab.MinX;

}

}float maxX

{

{abe.MaxX;

}

}float minY

{

{abe.MinY;

}

}float maxY

{

{abe.MaxY;

}

}

float MonteKarloSquare(int count, out int numberPoints, out float rel_delta)

{rand = new Random();= 0;

//DateTime start_date_time = DateTime.Now;(int k = 0; k < count; k++)

{p = new Point(minX + (float)(rand.NextDouble() * (maxX - minX)),+ (float)(rand.NextDouble() * (maxY - minY)));(PointInIceCream(p))

{++;

}

}

//DateTime end_date_time = DateTime.Now;MK_Square = abcd.Square() * ((float)numberPoints / (float)count);_delta = (float)Math.Round((Math.Abs((MK_Square - realSquare()) * 100) / realSquare()) * 10000) / (float)10000.0;MK_Square;

}

}

Triangle

{a, b, e;k1;k2;(Point p1, Point p2, Point p3)

{= p1; b = p2; e = p3;= (e.PointY - a.PointY) / (e.PointX - a.PointX);= (e.PointY - b.PointY) / (e.PointX - b.PointX);

}

float Square()

{

ab = (float)Math.Sqrt(Math.Pow((a.PointX - b.PointX), 2) + Math.Pow((a.PointY - b.PointY), 2));ae = (float)Math.Sqrt(Math.Pow((a.PointX - e.PointX), 2) + Math.Pow((a.PointY - e.PointY), 2));be = (float)Math.Sqrt(Math.Pow((b.PointX - e.PointX), 2) + Math.Pow((b.PointY - e.PointY), 2));polperim = (ab + ae + be) / 2.0f;(float)Math.Sqrt((polperim * (polperim - ab) * (polperim - ae) * (polperim - be)));

}bool PointInLines(Point p)

{((((p.PointX - a.PointX) * k1 + a.PointY) >= p.PointY) || (((p.PointX - b.PointX) * k2 + b.PointY) <= p.PointY))

{true;

}

{false;

}

}

float MaxX

{

{e.PointX;

}

}float MinY

{

{a.PointY;

}

}

float MaxY

{

{b.PointY;

}

}

}

Circle

{Centr;r;(Point p1, Point p2)

{= (p2.PointY - p1.PointY) / 2;= new Point(p1.PointX, p1.PointY + r);

}float Square()

{(float)(Math.PI * Math.Pow(r, 2) / 2.0);

}bool PointInCircle(Point p1)

{(p1.PointX < Centr.PointX)

{((Math.Pow(p1.PointX - Centr.PointX, 2) + Math.Pow(p1.PointY - Centr.PointY, 2)) <= Math.Pow(r, 2));

}{ return false; }

}

float MinX

{

{Centr.PointX - r;

}

}

Point CentrPoint

{

{Centr;

}

}

}Rectangle

{MinX, MaxX, MinY, MaxY;(float MiX, float MaX, float MiY, float MaY)

{= MiX;= MaX;= MiY;= MaY;

}float Square()

{(MaxX - MinX) * (MaxY - MinY);

}

}

}

Файл WebServiceMK.asmx

<%@ WebService Language="C#" CodeBehind="~/App_Code/WS_MonteKarlo.cs" Class="WSMK.WS_MonteKarlo" %>

Файл WebServiceMK.cs

using System;System.Collections.Generic;System.Web;System.Web.Services;

//[WebService(Namespace = "http://tempuri.org/")]

//[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

WSMK

{class WS_MonteKarlo : System.Web.Services.WebService

{

public WS_MonteKarlo()

{

//Раскомментируйте следующую строку в случае использования сконструированных компонентов

//InitializeComponent();

}

[WebMethod]float MK_Square(float ax, float ay, float bx, float by, float ex, float ey, int count, out int numberPoints, out float real_delta, out float realsquare, out DateTime start, out DateTime end)

{a = new Point(ax, ay);b = new Point(bx, by);e = new Point(ex, ey);= DateTime.Now;icecream = new IceCream(a, b, e);montekarloSquare = icecream.MonteKarloSquare(count, out numberPoints, out real_delta);= icecream.realSquare();= DateTime.Now;montekarloSquare;

}

}

Файл MainWindow.aspx


<Page x:Class="app3.Page1"="http://schemas.microsoft.com/winfx/2006/xaml/presentation":x="http://schemas.microsoft.com/winfx/2006/xaml":mc="http://schemas.openxmlformats.org/markup-compatibility/2006":d="http://schemas.microsoft.com/expression/blend/2008":Ignorable="d":DesignHeight="300" d:DesignWidth="300"="Page1">

<Grid Margin="0,0,-326,0">

<TextBox x:Name="KoordinX_A" HorizontalAlignment="Left" Height="23" Margin="61,52,0,0" TextWrapping="Wrap" Text="-8" VerticalAlignment="Top" Width="54" LostFocus="LostFocusTB"/>

<TextBox x:Name="KoordinX_B" HorizontalAlignment="Left" Height="23" Margin="61,75,0,0" TextWrapping="Wrap" Text="-8" VerticalAlignment="Top" Width="54" LostFocus="LostFocusTB"/>

<TextBox x:Name="KoordinX_D" HorizontalAlignment="Left" Height="23" Margin="61,98,0,0" TextWrapping="Wrap" Text="37" VerticalAlignment="Top" Width="54" LostFocus="LostFocusTB"/>

<TextBox x:Name="KoordinY_A" HorizontalAlignment="Left" Height="23" Margin="146,52,0,0" TextWrapping="Wrap" Text="-9" VerticalAlignment="Top" Width="54" LostFocus="LostFocusTB"/>

<TextBox x:Name="KoordinY_B" HorizontalAlignment="Left" Height="23" Margin="146,75,0,0" TextWrapping="Wrap" Text="17" VerticalAlignment="Top" Width="54" LostFocus="LostFocusTB"/>

<TextBox x:Name="KoordinY_D" HorizontalAlignment="Left" Height="23" Margin="146,98,0,0" TextWrapping="Wrap" Text="-9" VerticalAlignment="Top" Width="54" LostFocus="LostFocusTB"/>

<Button x:Name="Button1" Content="Расчёт" HorizontalAlignment="Left" Margin="243,49,0,0" VerticalAlignment="Top" Width="149" RenderTransformOrigin="0.427,0.455" Click="Button1_Click"/>

<ListBox x:Name="List" HorizontalAlignment="Left" Height="153" Margin="0,147,0,0" VerticalAlignment="Top" Width="626"/>

<Label Content="A" HorizontalAlignment="Left" Margin="10,49,0,0" VerticalAlignment="Top"/>

<Label Content="B" HorizontalAlignment="Left" Margin="10,73,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.623,0.128"/>

<Label Content="D" HorizontalAlignment="Left" Margin="10,98,0,0" VerticalAlignment="Top"/>

<Label Content="X" HorizontalAlignment="Left" Margin="68,21,0,0" VerticalAlignment="Top"/>

<Label Content="Y" HorizontalAlignment="Left" Margin="153,21,0,0" VerticalAlignment="Top"/>

<Button x:Name="Button2" Content="Очистить" HorizontalAlignment="Left" Margin="243,73,0,0" VerticalAlignment="Top" Width="149" Click="Button2_Click"/>

<Button x:Name="Button3" Content="Контрольный пример" HorizontalAlignment="Left" Margin="243,99,0,0" VerticalAlignment="Top" Width="149" Click="Button3_Click"/>

</Grid>

</Page>

Файл MainWindow.aspx.cs

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

app3

{

/// <summary>

/// Логика взаимодействия для Page1.xaml

/// </summary>partial class Page1 : Page

{Page1()

{();

}

_MonteKarloSoapClient newMK = new WS_MonteKarloSoapClient();delegate float DelegateWithParameters(float ax, float ay, float bx, float by, float ex, float ey, int count, out int numberPoints, out float real_delta, out float realsquare, out DateTime start, out DateTime end);ax = -8;bx = -8;dx = 37;ay = -9;by = 17;dy = -9;

bool check()

{result = true; // ошибок нетNumber;Error = "";

(float.TryParse(KoordinY_A.Text, out Number)) // проверка координаты Y точки А

{(float.Parse(KoordinY_A.Text) >= float.Parse(KoordinY_B.Text))

{+= "Координата Y точки A не может быть больше координаты Y точки В ";

KoordinY_A.Text = ay.ToString();= false;

}(float.Parse(KoordinY_A.Text) > float.Parse(KoordinY_D.Text))

{+= "Координата Y точки A не может быть больше координаты Y точки D";

KoordinY_A.Text = ay.ToString();= false;

}

}

{= false;

}

(float.TryParse(KoordinY_B.Text, out Number)) // проверка координаты Y точки B

{(float.Parse(KoordinY_B.Text) <= float.Parse(KoordinY_A.Text))

{+= "Координата Y точки B не может быть меньше координаты Y точки А";

KoordinY_B.Text = by.ToString();= false;

}(float.Parse(KoordinY_B.Text) <= float.Parse(KoordinY_D.Text))

{+= "Координата Y точки B не может быть меньше координаты Y точки D";

KoordinY_B.Text = by.ToString();= false;

}

}

{= false;

}(float.TryParse(KoordinX_A.Text, out Number)) //проверка координаты Х точки А

{(float.Parse(KoordinX_A.Text) >= float.Parse(KoordinX_D.Text))

{+= "Координата X точки A не может быть больше координаты X точки D";

KoordinX_A.Text = ax.ToString();= false;

}

}

{= false;

}(float.TryParse(KoordinX_B.Text, out Number)) //проверка координаты Х точки B

{(float.Parse(KoordinX_B.Text) >= float.Parse(KoordinX_D.Text))

{+= "Координата X точки B не может быть больше координаты X точки D";

KoordinX_B.Text = bx.ToString();= false;

}

}

{= false;

}(float.TryParse(KoordinX_D.Text, out Number)) //проверка координаты Х точки Е

{((float.Parse(KoordinX_D.Text) <= float.Parse(KoordinX_A.Text)) || (float.Parse(KoordinX_D.Text) <= float.Parse(KoordinX_B.Text)))

{+= "Координата X точки D не может быть меньше координаты X точки А и В";

KoordinX_D.Text = dx.ToString();= false;

}

}

{= false;

}

(float.TryParse(KoordinY_D.Text, out Number)) // проверка координаты Y точки Е

{((float.Parse(KoordinY_D.Text) < float.Parse(KoordinY_A.Text)))

{+= "Координата Y точки D не может быть меньше координаты Y точки А";

KoordinY_D.Text = dy.ToString();= false;

}((float.Parse(KoordinY_D.Text) >= float.Parse(KoordinY_B.Text)))

{+= "Координата Y точки D не может быть больше координаты Y точки В";

KoordinY_D.Text = dy.ToString();= false;

}

}

{= false;

}(result == false)

{.Show(Error, "Введено некорректное значение координат", MessageBoxButton.OK, MessageBoxImage.Warning);result;

}

{result;

}

}

void LostFocusTB(object sender, RoutedEventArgs ee)

{EventTextBox = (TextBox)sender;Number = 0.0f;TextInTextBox = EventTextBox.Text.Replace(".", ",");(float.TryParse(TextInTextBox, out Number))

{(EventTextBox.Equals(KoordinX_A)) // проверка координаты X точки А

{_B.Text = KoordinX_A.Text;= float.Parse(KoordinX_A.Text);= float.Parse(KoordinX_B.Text);

}

(EventTextBox.Equals(KoordinX_B)) // проверка координаты X точки B

{_A.Text = KoordinX_B.Text;= float.Parse(KoordinX_B.Text);= float.Parse(KoordinX_A.Text);

}(EventTextBox.Equals(KoordinX_D)) // проверка координаты X точки D

{= float.Parse(KoordinX_D.Text);

}(EventTextBox.Equals(KoordinY_A)) // проверка координаты Y точки A

{_D.Text = ay.ToString();= float.Parse(KoordinY_D.Text);= float.Parse(KoordinY_A.Text);

}(EventTextBox.Equals(KoordinY_B)) // проверка координаты Y точки B

{

= float.Parse(KoordinY_B.Text);

}(EventTextBox.Equals(KoordinY_D)) // проверка координаты Y точки D

{= float.Parse(KoordinY_A.Text);= float.Parse(KoordinY_D.Text);_A.Text = dy.ToString();

}

(KoordinX_A.Text != "" && KoordinX_B.Text != "" && KoordinX_D.Text != "" && KoordinY_A.Text != ""

&& KoordinY_B.Text != "" && KoordinY_D.Text != "")

{.IsEnabled = true;

}

{.IsEnabled = false;

}

}

{cur_result = MessageBox.Show("Введено некорректное значение координаты\n",

//"Будет поставлено предыдущее значение",

"Введено некорректное значение координаты", MessageBoxButton.OK,

MessageBoxImage.Exclamation);(cur_result == MessageBoxResult.OK)

{(EventTextBox.Equals(KoordinX_A))

{_A.Text = ax.ToString();

}(EventTextBox.Equals(KoordinX_B))

{_B.Text = bx.ToString();

}(EventTextBox.Equals(KoordinX_D))

{_D.Text = dx.ToString();

}(EventTextBox.Equals(KoordinY_A))

{_A.Text = ay.ToString();

}(EventTextBox.Equals(KoordinY_B))

{_B.Text = by.ToString();

}(EventTextBox.Equals(KoordinY_D))

{_D.Text = ay.ToString();

}

}

}

}

void Button1_Click(object sender, RoutedEventArgs e)

{(check())

{

delFoo = new DelegateWithParameters(newMK.MK_Square);.Items.Clear();one_line;

List.Items.Add("Кол-во точек " + "Попавшие точки " + "S Монте-Карло " + "Реальная S " + "Погрешность " + "Время расчёта, мc");

for (int i = 3; i < 8; i++)

{space = " ";numberPoints = 0;rel_delta = 0;square = 0;count = (int)Math.Pow(10, i);start;end;.Visibility = Visibility.Hidden;MKtag = delFoo.BeginInvoke(ax, ay, bx, by, dx, dy, count, out numberPoints, out rel_delta, out square, out start, out end, null, null);MKResult = delFoo.EndInvoke(out numberPoints, out rel_delta, out square, out start, out end, MKtag);arv_time = end - start;(int j = 1; j < 9 - i; j++) { space += " "; }_line = Math.Pow(10, i) + space + " " + numberPoints.ToString() + space + " " + MKResult.ToString(format: "F") + " " +.ToString(format: "F") + " " + rel_delta.ToString(format: "F") + "% " + arv_time.TotalMilliseconds;.Items.Add(one_line); //List.Items.Add("____________________________");.Visibility = Visibility.Visible;

}

}{ }

}void Button2_Click(object sender, RoutedEventArgs ee)

{_A.Text = KoordinX_B.Text =_D.Text = KoordinY_A.Text =_B.Text = KoordinY_D.Text = "";.IsEnabled = false;

}

void Button3_Click(object sender, RoutedEventArgs ee)

{= bx = -8;= 37;= dy = -9;= 17;

_A.Text = ax.ToString();_B.Text = bx.ToString();_D.Text = dx.ToString();_A.Text = ay.ToString();_B.Text = by.ToString();_D.Text = dy.ToString();.IsEnabled = true;

}

}

}

[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/MK_Square", ReplyAction="*")].Threading.Tasks.Task<app3.ServiceReference1.MK_SquareResponse> MK_SquareAsync(app3.ServiceReference1.MK_SquareRequest request);

}

[System.Diagnostics.DebuggerStepThroughAttribute()]

[System.ServiceModel.MessageContractAttribute(WrapperName="MK_Square", WrapperNamespace="http://tempuri.org/", IsWrapped=true)]partial class MK_SquareRequest {

[System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://tempuri.org/", Order=0)]float ax;

[System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://tempuri.org/", Order=1)]float ay;

[System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://tempuri.org/", Order=2)]float bx;

[System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://tempuri.org/", Order=3)]float by;

[System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://tempuri.org/", Order=4)]float ex;

[System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://tempuri.org/", Order=5)]float ey;

[System.ServiceModel.MessageBodyMemberAttribute(Namespace="http://tempuri.org/", Order=6)]int count;MK_SquareRequest() {

}

MK_SquareRequest(float ax, float ay, float bx, float by, float ex, float ey, int count) {.ax = ax;.ay = ay;.bx = bx;.by = by;.ex = ex;.ey = ey;.count = count;

}

}

[System.Diagnostics.DebuggerStepThroughAttribute()]

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "4.0.0.0")]

[System.ServiceModel.MessageContractAttribute(WrapperName="MK_SquareResponse", WrapperNamespace="http://tempuri.org/", IsWrapped=true)]partial class MK_SquareResponse {