You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

98 lines
3.6 KiB
C

1 month ago
#pragma once
#include "afxcoll.h"
#include <vector>
#include <string>
#include "DrawOperator/Xy.h"
#include "geos_c.h"
namespace NItem
{
class GenerateSECReserve
{
public:
GenerateSECReserve();
~GenerateSECReserve();
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD> PDP<EFBFBD><EFBFBD><EFBFBD>ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><EFBFBD><EFBFBD>
* @param wells <EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param width <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ԫ<EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>
* @param height <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ԫ<EFBFBD>ĸ߶<EFBFBD>
* @param angle_deg <EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>Ƕ<EFBFBD>
* @param gap ȥ<EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param boundaryPoints <EFBFBD><EFBFBD><EFBFBD>ڲü<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿԼ<EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param useClip <EFBFBD>Ƿ<EFBFBD>ִ<EFBFBD>б߽<EFBFBD><EFBFBD>ü<EFBFBD><EFBFBD>߼<EFBFBD>
* @return PDP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
std::vector<std::vector<CPoint2D>> CalculatePDP(
const std::vector<CPoint2D>& wells,
double width, double height, double angle_deg, double gap,
const std::vector<CPoint2D>& boundaryPoints,
bool useClip);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD> PDNP <EFBFBD><EFBFBD> PUD <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param wells <EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param width <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ԫ<EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>
* @param height <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ԫ<EFBFBD>ĸ߶<EFBFBD>
* @param angle_deg <EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>Ƕ<EFBFBD>
* @param gap ȥ<EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* &param pud_mult PUD<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param boundaryPoints <EFBFBD><EFBFBD><EFBFBD>ڲü<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿԼ<EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param useClip <EFBFBD>Ƿ<EFBFBD>ִ<EFBFBD>б߽<EFBFBD><EFBFBD>ü<EFBFBD><EFBFBD>߼<EFBFBD>
* @param pdnpLines pdnp<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param pudLines pud<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
void CalculateExpansion(
const std::vector<CPoint2D>& wells,
double width, double height, double angle_deg, double gap, double pud_mult,
const std::vector<CPoint2D>& boundaryPoints,
bool useClip,
std::vector<std::vector<CPoint2D>>& pdnpLines,
std::vector<std::vector<CPoint2D>>& pudLines);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD> PDNP <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param wells <EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param width <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ԫ<EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>
* @param height <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ԫ<EFBFBD>ĸ߶<EFBFBD>
* @param angle_deg <EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>Ƕ<EFBFBD>
* @param gap ȥ<EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param useClip <EFBFBD>Ƿ<EFBFBD>ִ<EFBFBD>б߽<EFBFBD><EFBFBD>ü<EFBFBD><EFBFBD>߼<EFBFBD>
* @param boundaryPoints <EFBFBD><EFBFBD><EFBFBD>ڲü<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿԼ<EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param pdnpLines pdnp<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
void CalculatePDNP(
const std::vector<CPoint2D>& wells, double width, double height, double angle_deg, double gap,
bool useClip, const std::vector<CPoint2D>& boundaryPoints,
std::vector<std::vector<CPoint2D>>& pdnpLines);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD> PUD <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param wells <EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param width <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ԫ<EFBFBD>Ŀ<EFBFBD><EFBFBD><EFBFBD>
* @param height <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ԫ<EFBFBD>ĸ߶<EFBFBD>
* @param angle_deg <EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD>Ԫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD>Ƕ<EFBFBD>
* @param gap ȥ<EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* &param pud_mult PUD<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param useClip <EFBFBD>Ƿ<EFBFBD>ִ<EFBFBD>б߽<EFBFBD><EFBFBD>ü<EFBFBD><EFBFBD>߼<EFBFBD>
* @param boundaryPoints <EFBFBD><EFBFBD><EFBFBD>ڲü<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ⲿԼ<EFBFBD><EFBFBD><EFBFBD>߽<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param pudLines pud<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
void CalculatePUD(
const std::vector<CPoint2D>& wells, double width, double height, double angle_deg, double gap, double pud_mult,
bool useClip, const std::vector<CPoint2D>& boundaryPoints,
std::vector<std::vector<CPoint2D>>& pudLines);
protected:
void Init();
void InternalClipAndExport(
GEOSGeometry* geom,
const std::vector<CPoint2D>& boundaryPoints,
bool useClip,
std::vector<std::vector<CPoint2D>>& outLines);
private:
};
}